我有以下表格:如何根據外鍵字段執行SQL查詢?
人:
id, name
父:
id, people_id, name
我曾嘗試以下:
SELECT * FROM people
LEFT JOIN parent ON people.id = parent.people_id
WHERE parent.name != 'Carol';
我如何找到父母姓名不是Carol的所有人?
我有以下表格:如何根據外鍵字段執行SQL查詢?
人:
id, name
父:
id, people_id, name
我曾嘗試以下:
SELECT * FROM people
LEFT JOIN parent ON people.id = parent.people_id
WHERE parent.name != 'Carol';
我如何找到父母姓名不是Carol的所有人?
你可以試試下面的代碼
select people.name from people
inner join parent on people.id=parent.people_id
where parent.name not in ('Carol')
謝謝。一個問題。如果我使用LEFT JOIN而不是INNER JOIN將會發生什麼? – MiniGunnR
如果你使用左連接,那麼結果也將是相同的 –
,如果你認爲任何人存在沒有父母,那麼左連接是更好的選擇,但如果所有人都有父母,那麼內連接和左連接將提供相同的結果 –
如果兩個表是通過使用外鍵進行查詢。
如果你想從一個表在第二表中的一些相關的條目,則用心靈距離人民內部聯接
選擇* JOIN父ON people.id = parent.people_id 所有記錄'Carol'<>'Carol'
同樣,LEFT JOIN將從LEFT鏈接表中獲取所有記錄,但是如果從RIGHT表中選擇了某些列,如果沒有相關記錄,則這些列將包含NULL
首先,你爲什麼需要兩張表?爲什麼你不能有一個名爲「Person」的帶有ID,Name,ParentID列的表
其中ParentID將是可選的,並且如果它具有父親,則引用該ID。
,並運行下面的查詢
select * from PERSON where Name not like 'Carol%' and ParentID IS NOT NULL;
SELECT * FROM人WHERE EXISTS(SELECT 1 FROM父WHERE people_id = ID和名稱<> '卡羅爾')
所有的表結構首先你限制了未來的增長。就像將來如果你想添加父母的父母,那麼它不會在這個表格結構中工作。 你可以像這樣: ID | parent_id | people_name
在這裏,您可以爲parent添加parent_id null,併爲擁有父級的用戶添加parent_id作爲id。這裏找回你必須使用自連接(在同一個表連接)INNER之間
`
Select * from people P
INNER JOIN parent PA ON PA.people_id = P._id
where PA.name not in ('Carol')
`
差異JOIN和LEFT OUTER JOIN 是 1)INNER JOIN只攜帶兩個表 之間的相似數據,如果在人們的表parent_id中是空的,那麼它不會丟棄整個行,但是在LEFT OUTER JOIN的情況下,它將帶來來自LEFT表的所有行以及來自右表的相關表。在右側連接的行中全部爲空...
你嘗試過什麼嗎? –
請指定您正在使用的RDBMS – Laxmi
如何將孩子與父母聯繫起來? –