oracle - Mysql查詢,join空表時(shí)發(fā)生問題
問題描述
問題是這樣的,用戶表有一個(gè)記錄,現(xiàn)在想用用戶表join另一張計(jì)算出來的表,查詢用戶表的一個(gè)記錄和另一張計(jì)算出來的表的所有記錄。但是這張計(jì)算得來的表有可能是空的,當(dāng)它是空表的時(shí)候,最后的查詢結(jié)果就只能是空值了
select * from user u1 join (select * from user where user.id=2) as u2 where u1.id=1;
比如以上這個(gè)sql語句,user表只有id為1的記錄。查詢出來是Empty set ,怎么讓它把id為1的記錄取出來?
PS:試過左連接,,結(jié)果不行,報(bào)錯(cuò)了
select * from user u1 left join (select * from user where user.id=2) as u2 where u1.id=1;
在where u1.id=1附近出的錯(cuò)
問題解答
回答1:左連接是這樣玩的么..
SELECT * FROM user LEFT JOIN user2 ON user1.id = user2.gid where 你的條件
以左表為基準(zhǔn),右表沒數(shù)據(jù)也會(huì)返回左表的內(nèi)容
SELECT * FROM table1 JOIN table2? 條件沒有直接這樣
回答2:剛剛想出了一個(gè)答案,使用合并結(jié)果集select u1.id from user as u1 where u1.id=1 union select u2.id from user u2 where u2.id=2;即使用戶表沒有2這個(gè)記錄也可以取出id為1的記錄。而且把2改成3同樣可以取出2和3的記錄又想了幾分鐘,發(fā)現(xiàn)左連接也是可以的,不過要加表連接條件,1=1.這樣sql語句就不會(huì)報(bào)錯(cuò)了之前試過這么做,但是結(jié)果集太亂以為不成功,所以看走眼了感謝回答的朋友,你們的每一次回答都對(duì)我有不少的啟發(fā),謝謝你們
