Tôi có hai bảng A và B. A là phụ huynh của B. Tôi đang cố gắng tìm tất cả Vì không có B cụ thể khi còn nhỏ. Thông thường tôi sẽ làmSQL Chọn hàng và loại trừ trẻ em
SELECT A.id FROM A WHERE A.id NOT IN (SELECT B.AId FROM B WHERE B.someFK = foo);
Tuy nhiên vì lý do hiệu suất, tôi không muốn sử dụng lựa chọn bên trong. Tôi đã thử một cái gì đó như:
SELECT A.id FROM A LEFT JOIN B ON (A.id = B.AId) WHERE B.someFK != foo OR B.someFK IS NULL
Vấn đề là này trả Như có nhiều hơn một đứa trẻ không phân biệt nếu họ có B. quy định
EDIT: Changed B.id đến B. someFK
Rất tiếc, không nghĩ rằng nó sẽ tạo sự khác biệt cho ví dụ nhưng B.id phải là B.someFK. Có nghĩa là As có thể chia sẻ foo bị loại trừ. – Jim
bạn có lẽ nên chỉnh sửa trực tiếp trong câu hỏi để nó đáng chú ý hơn đối với người đọc mới. – DMA57361
bạn mới sử dụng StackOverflow. Vui lòng chấp nhận câu trả lời nếu nó giải quyết được vấn đề của bạn. – Falcon