比方說,我有一個名爲實體具有以下列的表:
ID | flag | foreignKey | parentEntityId過濾選擇與參加同一個表
其它指出
- 沒有這些字段可以爲NULL
- 當parentEntityId!= 0,你可以肯定的是FOREIGNKEY也有一個價值!= 0(反之亦然)
我有以下約束收集一些數據:
- FOREIGNKEY必須等於0 [容易
:D
] - 標誌必須等於0 OR(比方說15)[easy
:p
] - id must不能在其他行的parentEntityId領域
:/
?]引用
我沒使用自我滿足最後一個約束加入
-- I Finally ended up with a sub-query (which returns what I need) :
SELECT e.*
FROM entity e
WHERE e.flag='15'
-- gathering entities ids where foreignKey has a specific value
AND e.id NOT IN
(SELECT GROUP_CONCAT(DISTINCT CONVERT(parentId , CHAR(8)) SEPARATOR ",")
FROM entity where foreignKey='10'
GROUP BY id
);
我的問題是..這可以通過「自我加入」表達來實現嗎?
5月downvoters解釋爲什麼? – Stphane