1

我是 MySQL 的新手,所以我将使用一个示例来揭示我的问题......

我有两张桌子:

表格1:

+----+-----+-----+-----+-----+
| id | a1  | b1  | c1  | d1  |
+----+-----+-----+-----+-----+
|  1 | ... | ... | ... | ... |
|  2 | ... | ... | ... | ... |
|  3 | ... | ... | ... | ... |
|  4 | ... | ... | ... | ... |
|  5 | ... | ... | ... | ... |
|  6 | ... | ... | ... | ... |
+----+-----+-----+-----+-----+

表2:

+----+-----+-----+-----+---------------+
| id | a2  | b2  | c2  | table1_row_id |
+----+-----+-----+-----+---------------+
|  1 | ... | ... | ... | ...           |
|  2 | ... | ... | ... | 4             |
|  3 | ... | ... | ... | ...           |
+----+-----+-----+-----+---------------+

Table2 列table1_row_id是 table1 的键。

我应该使用哪种查询来检索table2.table1_row_id列中未引用的 table1 数据?

例如,对于上述表,查询应返回如下表:

+----+-----+-----+-----+-----+
| id | a1  | b1  | c1  | d1  |
+----+-----+-----+-----+-----+
|  1 | ... | ... | ... | ... |
|  2 | ... | ... | ... | ... |
|  3 | ... | ... | ... | ... |
|  5 | ... | ... | ... | ... |
|  6 | ... | ... | ... | ... |
+----+-----+-----+-----+-----+

可能这很简单,但我不知道我该怎么做......

4

2 回答 2

3
SELECT * 
FROM t1 
WHERE 
    `id` NOT IN (SELECT `table1_row_id` 
                 FROM t2 
                 WHERE
                     `table1_row_id` IS NOT NULL)
于 2012-11-04T12:14:26.043 回答
1
select t1.a1, t1.b1, t1.c1, t1.d1
from table1 t1
left join table2 t2 on t2.table1_row_id = t1.id
where t2.id is null
于 2012-11-04T12:09:14.040 回答