从两个表sql中检索数据

时间:2015-08-12 07:43:04

标签: mysql sql-server sql-optimization

我有两个名为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的新手,所以请不要考虑我的错误。)

3 个答案:

答案 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
)

我希望这会有所帮助。 ; - )