Làm thế nào để chọn tất cả các hàng trong một bảng không xuất hiện trên một bảng khác?
Table1:
+-----------+----------+------------+
| FirstName | LastName | BirthDate |
+-----------+----------+------------+
| Tia | Carrera | 1975-09-18 |
| Nikki | Taylor | 1972-03-04 |
| Yamila | Diaz | 1972-03-04 |
+-----------+----------+------------+
Table2:
+-----------+----------+------------+
| FirstName | LastName | BirthDate |
+-----------+----------+------------+
| Tia | Carrera | 1975-09-18 |
| Nikki | Taylor | 1972-03-04 |
+-----------+----------+------------+
Ví dụ đầu ra cho các hàng trong Bảng1 không có trong Bảng2:
+-----------+----------+------------+
| FirstName | LastName | BirthDate |
+-----------+----------+------------+
| Yamila | Diaz | 1972-03-04 |
+-----------+----------+------------+
Có lẽ một cái gì đó như thế này nên làm việc:
SELECT * FROM Table1 WHERE * NOT IN [SELECT * FROM Table2]
C r
2.1225 huy hiệu vàng34 Huy hiệu bạc41 Huy hiệu đồng5 gold badges34 silver badges41 bronze badges
Hỏi ngày 1 tháng 8 năm 2012 lúc 21:04Aug 1, 2012 at 21:04
Bạn cần phải thực hiện SubSelect dựa trên tên cột, không phải
+-----------+----------+------------+
| FirstName | LastName | BirthDate |
+-----------+----------+------------+
| Tia | Carrera | 1975-09-18 |
| Nikki | Taylor | 1972-03-04 |
+-----------+----------+------------+
3.Ví dụ: nếu bạn có trường
+-----------+----------+------------+
| FirstName | LastName | BirthDate |
+-----------+----------+------------+
| Tia | Carrera | 1975-09-18 |
| Nikki | Taylor | 1972-03-04 |
+-----------+----------+------------+
4 chung cho cả hai bảng, bạn có thể làm:SELECT * FROM Table1 WHERE id NOT IN [SELECT id FROM Table2]
Tham khảo Cú pháp Subquary MySQL để biết thêm ví dụ.
Đã trả lời ngày 1 tháng 8 năm 2012 lúc 21:12Aug 1, 2012 at 21:12
StenniestennieStennie
62.5K14 Huy hiệu vàng145 Huy hiệu bạc173 Huy hiệu đồng14 gold badges145 silver badges173 bronze badges
5
Nếu bạn có 300 cột như bạn đã đề cập trong một nhận xét khác và bạn muốn so sánh trên tất cả các cột [giả sử các cột là cùng một tên], bạn có thể sử dụng
+-----------+----------+------------+
| FirstName | LastName | BirthDate |
+-----------+----------+------------+
| Tia | Carrera | 1975-09-18 |
| Nikki | Taylor | 1972-03-04 |
+-----------+----------+------------+
5 để tham gia vào tất cả các tên cột phù hợp giữa hai bảng để để Bạn không cần phải gõ tất cả các điều kiện tham gia theo cách thủ công:SELECT a.*
FROM tbl_1 a
NATURAL LEFT JOIN tbl_2 b
WHERE b.FirstName IS NULL
Đã trả lời ngày 1 tháng 8 năm 2012 lúc 22:12Aug 1, 2012 at 22:12
Zane Bienzane BienZane Bien
22.3k6 Huy hiệu vàng44 Huy hiệu bạc57 Huy hiệu đồng6 gold badges44 silver badges57 bronze badges
4
SELECT *
FROM Table1 AS a
WHERE NOT EXISTS [
SELECT *
FROM Table2 AS b
WHERE a.FirstName=b.FirstName AND a.LastName=b.Last_Name
]
+-----------+----------+------------+
| FirstName | LastName | BirthDate |
+-----------+----------+------------+
| Tia | Carrera | 1975-09-18 |
| Nikki | Taylor | 1972-03-04 |
+-----------+----------+------------+
6 sẽ giúp bạn ...
go2null
1.8601 Huy hiệu vàng20 Huy hiệu bạc17 Huy hiệu đồng1 gold badge20 silver badges17 bronze badges
Đã trả lời ngày 1 tháng 8 năm 2012 lúc 21:07Aug 1, 2012 at 21:07
Ruzbeh Iraniruzbeh IraniRuzbeh Irani
2.19817 Huy hiệu bạc10 Huy hiệu đồng17 silver badges10 bronze badges
2
Một tham gia bên trái tiêu chuẩn có thể giải quyết vấn đề và, nếu các trường tham gia được lập chỉ mục, cũng sẽ nhanh hơnif the fields on join are indexed,
should also be faster
SELECT *
FROM Table1 as t1 LEFT JOIN Table2 as t2
ON t1.FirstName = t2.FirstName AND t1.LastName=t2.LastName
WHERE t2.BirthDate Is Null
Đã trả lời ngày 1 tháng 8 năm 2012 lúc 21:21Aug 1, 2012 at 21:21
StevesteveSteve
211K22 Huy hiệu vàng226 Huy hiệu bạc282 Huy hiệu Đồng22 gold badges226 silver badges282 bronze badges
4
Hãy thử truy vấn đơn giản này. Nó hoạt động hoàn hảo.
select * from Table1 where [FirstName,LastName,BirthDate] not in [select * from Table2];
Đã trả lời ngày 30 tháng 10 năm 2017 lúc 16:58Oct 30, 2017 at 16:58
VijeshvijeshVijesh
7453 Huy hiệu vàng8 Huy hiệu bạc22 Huy hiệu đồng3 gold badges8 silver badges22 bronze badges
1
Try:
SELECT * FROM table1
LEFT OUTER JOIN table2
ON table1.FirstName = table2.FirstName and table1.LastName=table2.LastName
WHERE table2.BirthDate IS NULL
Đã trả lời ngày 8 tháng 12 năm 2014 lúc 11:58Dec 8, 2014 at 11:58
Một tùy chọn sẽ là
+-----------+----------+------------+
| FirstName | LastName | BirthDate |
+-----------+----------+------------+
| Tia | Carrera | 1975-09-18 |
| Nikki | Taylor | 1972-03-04 |
+-----------+----------+------------+
0Đã trả lời ngày 24 tháng 11 năm 2021 lúc 13:46Nov 24, 2021 at 13:46
Điều này làm việc cho tôi trong Oracle:
+-----------+----------+------------+
| FirstName | LastName | BirthDate |
+-----------+----------+------------+
| Tia | Carrera | 1975-09-18 |
| Nikki | Taylor | 1972-03-04 |
+-----------+----------+------------+
1
Simon PA
74813 Huy hiệu bạc25 Huy hiệu đồng13 silver badges25 bronze badges
Đã trả lời ngày 7 tháng 2 năm 2017 lúc 12:16Feb 7, 2017 at 12:16
1
+-----------+----------+------------+
| FirstName | LastName | BirthDate |
+-----------+----------+------------+
| Tia | Carrera | 1975-09-18 |
| Nikki | Taylor | 1972-03-04 |
+-----------+----------+------------+
2
Matt
73.3K26 Huy hiệu vàng150 Huy hiệu bạc179 Huy hiệu đồng26 gold badges150 silver badges179 bronze badges
Đã trả lời ngày 16 tháng 6 năm 2015 lúc 18:52Jun 16, 2015 at 18:52