我有一個3字段的表。建議一個MySQL查詢
ID Name ParentID Active
1 A 0 1
2 B 0 1
3 C 2 1
現在,我想查詢,其中如果不存在具有ParentID
> 0和活性,然後用它的父ID的行(2)被跳過行。
請建議單個MySQL查詢來實現此目的。
謝謝 Khuram
編輯:謝謝你們,終於解決並標明正確的答案。
我有一個3字段的表。建議一個MySQL查詢
ID Name ParentID Active
1 A 0 1
2 B 0 1
3 C 2 1
現在,我想查詢,其中如果不存在具有ParentID
> 0和活性,然後用它的父ID的行(2)被跳過行。
請建議單個MySQL查詢來實現此目的。
謝謝 Khuram
編輯:謝謝你們,終於解決並標明正確的答案。
我不知道這個問題是很清楚的。你的意思是讀取所有行的ID不在父行中,其行是活動的?如果是這樣的:
SELECT * FROM mytable
WHERE id NOT IN (
SELECT ParentID FROM mytable WHERE Active = 1
);
如果第3行處於活動狀態,則選擇1,3,如果第3行處於非活動狀態,則選擇1,2 – Khuram 2012-04-13 11:03:21
SELECT t1.*
FROM tbl t1
LEFT JOIN tbl t2
ON t1.ID = t2.ParentID
AND t2.Active = 1
WHERE t2.id IS NULL
那你試試這麼遠嗎? – mcha 2012-04-13 10:50:45
如果您從父行的角度重寫您的問題(應該省略),您將有一個合理的實施啓動。 – 2012-04-13 10:59:43
相信我,我們很好地適應寫作的疑問,但是這個問題讓我頭痛不已。也許是MySQL案例> – Khuram 2012-04-13 11:00:45