舉例:有兩個表 1.school 2.student (school的主鍵"id" 是student的外鍵"s_id")
我想兩表關聯查詢,獲得所有school的資料,還有school對應的student的資料
于是有陳述句
```
select
*
form
school sc ,student st
where sc.id = student.s_id
```
然后問題就來了,當school表中沒有對應的student的時候,school的資料也獲取不到
而我希望的結果是:無論school有沒有對應的student,先把school的資料全部獲取,如果有對應的student,同時獲取student的資料
請問一下大家有沒有什么好的思路?
uj5u.com熱心網友回復:
where school.id=student.sid(+) 其他和你的一樣 這個連接條件變下uj5u.com熱心網友回復:
語法報錯啊老哥uj5u.com熱心網友回復:
語法報錯啊老哥
uj5u.com熱心網友回復:
解決啦select * from school s1 left join student s2 on s1.id=s2_id
這個是正解
uj5u.com熱心網友回復:
(+),這個語法是早期的,現在都不建議這樣寫了,后續的版本就都不支持了。uj5u.com熱心網友回復:
select * from school sc left join student st on sc.id = st.s_id左連接表查詢,是將左表sc查詢出來后,根據條件 sc.id = st.s_id與右表st進行笛卡爾積運算,不管右表 st有么有資料最終查出來的結果行數是與左表sc相同的
樓主的sql是集合查詢,當兩個表沒有資料交集時,就不會有查詢結果的
uj5u.com熱心網友回復:
```select
*
form
school sc ,student st
where sc.id(+) = student.s_id
uj5u.com熱心網友回復:
(+) 是Oracle 8i之前的寫法,現在建議都寫成left join或rigth join轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/82519.html
標籤:基礎和管理
上一篇:mysql在建表陳述句中添加索引
下一篇:mysql互換表中兩列資料方法
