如何显示当前与第二个表中的结果不匹配的表中的所有内容。
例如:我想在(表A)中显示当前没有类型1记录的每个名称。注意'肯'目前有两个日志条目。每种类型1和类型2一个。结果应该只显示John和Genius
表A - 名称
+-----+--------+
| nid | name |
+-----+--------+
| 1 | ken |
| 2 | john |
| 3 | genius |
+-----+--------+
表B - 日志(每个名称可能有多个条目)
+------+-----+
| type | nid |
+------+-----+
| 1 | 1 |
| 2 | 1 |
| 2 | 2 |
+------+-----+
预期结果
| nid | name |
+-----+--------+
| 2 | john |
| 3 | genius |
答案 0 :(得分:0)
您需要做的就是在子查询
中对type ='1'的记录进行排序SELECT NAME FROM TABLEA WHERE NID NOT IN (SELECT NID FROM TABLEB WHERE TYPE='1')
答案 1 :(得分:0)
SELECT nid, name from tableA
inner join tableB on tableA.nid = tableB.nid
where nid > 1
答案 2 :(得分:0)
SELECT *
FROM TableA a
WHERE NOT EXISTS (SELECT * FROM TableB b WHERE a.nid = b.nid AND b.type = 1)
答案 3 :(得分:0)
您可以使用左连接...
SELECT a.nid, a.name
FROM tableA a
LEFT JOIN tableB b ON a.nid = b.nid AND b.type = 1
WHERE b.nid IS NULL
基本上,如果查询无法在表B中找到满足连接条件的记录,那么它将加入一行所有空值。