我有一個類別名稱與category_parent = id相關的簡單表。我需要選擇沒有孩子的記錄。選擇沒有自我加入關係的父母
從其他答案我已經拼湊起來的這樣一句話:
SELECT cat.category_name AS 'Child Name', cat.id AS 'Child ID',
cat.category_parent AS 'Childs Parent', cat_par.category_name AS 'Parent Name',
cat_par.id AS 'Parent ID'
FROM category AS cat
LEFT JOIN category AS cat_par ON cat.category_parent = cat_par.id
WHERE cat_par.id IS NULL;
這將成功地選擇一些沒有父記錄。我試圖將最後一項更改爲WHERE cat.category_parent IS NULL
,但是這個結果還是空的。
我也曾嘗試基於另一個答案這樣的說法:
SELECT cat.category_name AS 'Child Name', cat.id AS 'Child ID',
cat.category_parent AS 'Childs Parent' cat_par.category_name AS 'Parent Name',
cat_par.id AS 'Parent ID'
FROM category AS cat
WHERE NOT EXISTS
(SELECT id FROM category AS cat_par WHERE cat.category_parent = cat_par.id);
返回錯誤No value given for one or more required parameters.
你爲什麼在'cat.category_parent IS NULL'中的哪個地方重新開始的原因是什麼?其中第一個查詢已經在工作? –
第一個查詢用於找到沒有孩子的父母,但沒有找到沒有父母的孩子。我認爲改變最後的WHERE會做到這一點。 – Nelluk
你是否只需要沒有孩子的記錄的id和category_name,還是你還需要他們的父母名字? – fthiella