我有2个桌子,我正在尝试使用左连接加入它们
表1
hid rid uid tie
1 61 566 23
2 62 322 21
3 63 455 65
4 63 223 29
表2
uhid
322
455
223
344
我想要的输出应该是
uid tie
322 21
455 65
223 29
344 0
我的查询是
select table1.uid,table1.tie from table1 left join table2 on
table2.uhid = table1.uid
where (table1.rid=61 or table1.rid=62 or table1.rid=63)
但它给了我以下不希望的结果。
uid tie
566 23
322 21
455 65
223 29
344 0
我不希望566不被包括在内,因为它不包括在表2中虽然它是61并且它包含在where子句中。
非常感谢任何帮助。提前谢谢。
校正的
select table1.uid,table1.tie from table2 left join table1 on
table2.uhid = table1.uid
and (table1.rid=61 or table1.rid=62 or table1.rid=63)
答案 0 :(得分:1)
你应该使用RIGHT JOIN
。您可能需要浏览this link
答案 1 :(得分:0)
使用right join
是一个很好的第一步,但它仍然无法为您提供所需的结果。
select table2.uhid,ifnull(table1.tie, 0) from table1 right join table2 on
table2.uhid = table1.uid
where (table1.rid=61 or table1.rid=62 or table1.rid=63 or table1.rid is null);
也许您需要一些帮助来了解左/右连接是如何工作的。
左连接将确保包含连接左侧表中的每一行,而不管on子句如何(右侧相似)。 on
子句仅确定其他表是否具有列值。唯一的问题是当on子句失败时,其他表的列将具有需要考虑的空值
ifnull(table1.tie, 0)
和这个
or table1.rid is null
帐户
这是一个sql小提琴演示