我有两个名为table1,table2的表。 table1列是t1_id,t1_name,t1_status。 table2列是t1_id,t2_id,t2_name,t2_status。 当我在前端执行某些操作时,t1_id将被插入到table2中。 我需要的是我想要来自table1的t1_id(s),这些都没有被分配或插入到table2中。
我尝试过这个问题:
SELECT t1.t1_id, t1.t1_name
FROM table1 t1
LEFT OUTER JOIN table2 t2
ON t1.t1_id != t2.t1_id
查询的问题是当所有t1_id都插入到table2中时,所有t1_id(s)都会再次显示。 如何解决这个问题? (我是sql的新手,所以请不要考虑我的错误。)
答案 0 :(得分:1)
使用is null来获取table1中的行,这些行在table2中没有任何关联
SELECT t1.t1_id, t1.t1_name
FROM table1 t1
LEFT OUTER JOIN table2 t2
ON t1.t1_id = t2.t1_id
WHERE t2.t1_id IS NULL
答案 1 :(得分:1)
如果我理解你的问题,这必须是你需要的查询:
SELECT t1.t1_id, t1.t1_name
FROM table1 t1
LEFT OUTER JOIN table2 t2
ON t1.t1_id = t2.t1_id
where t2.t1_id is null
答案 2 :(得分:0)
我认为这可以回答您的问题:Select rows which are not present in other table
SELECT t1.t1_id, t1.t1_name
FROM table1 t1
WHERE NOT EXISTS (
SELECT 1 --it's not so relevant what you put here
FROM table2 t2
WHERE t1.t1_id = t2.t1_id
)
我希望这会有所帮助。 ; - )