MySQL查询:根据另一个表中的键检索一些行

MySQL查询:根据另一个表中的键检索一些行,mysql,Mysql,我是MySQL的新手,所以我将用一个例子来说明我的问题 我有两张桌子: 表1: 表2: Table2列table1\u行\u id是table1的键 我应该使用哪种查询来检索table2.table1\u row\u id列中未引用的table1数据 例如,对于上述表,查询应返回如下表: +----+-----+-----+-----+-----+ | id | a1 | b1 | c1 | d1 | +----+-----+-----+-----+-----+ | 1 | ... |

我是MySQL的新手,所以我将用一个例子来说明我的问题

我有两张桌子:

表1:

表2:

Table2列table1\u行\u id是table1的键

我应该使用哪种查询来检索table2.table1\u row\u id列中未引用的table1数据

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

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

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

如果无法获取任何行,子查询将返回空值,这将阻止主查询返回行。而且,如果子表很大,mysql使用这种方法的性能也很差。通过从子查询中排除空记录,这将完成任务。从表2中选择表1\u row\u id,其中表1\u row\u id不是空的。如果无法获取任何行,子查询将返回空值,这将阻止主查询返回行。而且,如果子表很大,mysql使用这种方法的性能也很差。通过从子查询中排除空记录,这将完成任务。从table2中选择table1\u row\u id,其中table1\u row\u id不为空
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
+----+-----+-----+-----+-----+
| id | a1  | b1  | c1  | d1  |
+----+-----+-----+-----+-----+
|  1 | ... | ... | ... | ... |
|  2 | ... | ... | ... | ... |
|  3 | ... | ... | ... | ... |
|  5 | ... | ... | ... | ... |
|  6 | ... | ... | ... | ... |
+----+-----+-----+-----+-----+
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
SELECT * 
FROM t1 
WHERE 
    `id` NOT IN (SELECT `table1_row_id` 
                 FROM t2 
                 WHERE
                     `table1_row_id` IS NOT NULL)