2014-03-18 48 views
-4

表1SQL查询,2个表,避免重复结果

NO_REG - ID

表2

NO_REG - 包袋

其该表1含有可以说3 ID问题,表2具有相同的NO_REG只是1行中袋

我做

SELECT BAGS, ID FROM TABLE 1 AS T1 INNER JOIN TABLE 2 AS T2 ON T1.NO_REG = T2.NO_REG

我得到

NO_REG ID - BAGS 
123  999- 2 
123  989- 2 
123  979- 2 

我需要

NO_REG ID - BAGS 
123  999- 2 
123  989- NULL (or 0) 
123  979- NULL (or 0) 

希望我是很清晰。

+0

你为什么不知道您正在使用的RDBMS? sql-server!= mysql关于你的问题,你怎么知道哪个包跟哪个包一起?如果表2中有两条记录怎么办?如果Table2中的记录数多于Table1中的记录数相同,该怎么办?请更清楚这种边缘情况,特别是因为你想要的是非常规的。 – GolezTrol

+0

NO_REG中的值是什么? – GolezTrol

+0

对不起,忘了这一点,更新了帖子。 – ESC

回答

-1

你需要LEFT JOIN代替INNER JOIN来检索匹配值和空非匹配

只是像

SELECT BAGS, ID FROM TABLE 1 AS T1 LEFT JOIN TABLE 2 AS T2 ON T1.NO_REG = T2.NO_REG 
+0

并可能使用DSTINCT ... – bksi

+0

这是不正确的。将内部连接更改为左连接并不会奇迹般地将给定结果转换为所需结果,甚至不使用DISTINCT。 – GolezTrol

+0

但我认为@Olvathar可能在OP的意义上并不是真正在说的正确轨道上。我怀疑这3个ID实际上并不全是999. – Danny