A加油卡表:
id, userName, cardNo
1 aaa # bbb 111
3 ##B加油記錄表:
id, number, userName , cardNo,
1 1234 111
2 234
# left join:select * from B b left join A a on a.userName = b.userName where b.userName=aaa
由於上面sql中,on後面的條件,userName在A表中對應多條,而不是對應一條,結果集合就是笛卡爾積。 B表中的1條滿足剩餘A表中的2條滿足。結果為2條。 select * from B b left join A a on a.userName = b.userName and a.cardNo = b.cardNo where b.userName=aaa
由於上面sql中,on後面的兩個條件在A表中只能找到一條唯一數據,所以結果就是B表中有多少條數據滿足where,結果集就回傳多少條數據。這裡是回傳一條資料
下面這個sql與上面的left join效果一樣:select * from A a right join B b on a.userName = b.userName and a.cardNo = b.cardNo where b.userName=aaa
select * from A a inner join B b on a.userName = b.userName and a.cardNo = b.cardNo where a.userName=aaa
還是先看on後面的條件,如果A表中的一條數據對應on的兩個條件在B中只有一條數據,則回傳滿足where條件的2條數據。
select * from B b inner join A a on a.userName = b.userName and a.cardNo = b.cardNo where a.userName=aaa
以上總結一條:看on後面的條件,在被關聯表中的資料是一條還是多條。
更多相關問題請訪問PHP中文網:mysql影片教學
#以上是mysql的左連接、右連接、內連接的詳細內容。更多資訊請關注PHP中文網其他相關文章!