这是我的桌子t1
| postid | type | parentid |
| 1 | Q | null |
| 2 | A | 1 |
| 3 | Q | null |
| 4 | Q | null |
| 5 | A | 5 |
| 6 | Q | null |
| 7 | Q | null |
| 8 | Q | null |
| 9 | A | 8 |
| 10 | A | 8 |
| 11 | Q | null |
| 12 | Q | null |
| 13 | Q | null |
| 14 | A | 13 |
| 15 | A | 13 |
所以在上表中,1是帖子ID和一个父Q,它是A的父ID,帖子ID为2
现在,我想标识Q类型的帖子ID,该ID不是任何人的父母。
就像您观察上面的表格一样,我想选择3、6、7、11、12。因此,我该如何编写查询以实现上述结果。
答案 0 :(得分:1)
您可以使用NOT IN
来完成
SELECT * FROM yourtable t1 WHERE t1.postid NOT IN
(SELECT parentid FROM yourtable t2 WHERE parentid IS NOT NULL)
答案 1 :(得分:1)
SELECT t1.*
FROM table t1
LEFT JOIN table t2 ON t1.postid=t2.parentid
WHERE t2.postid is null AND t1.type='Q'
答案 2 :(得分:1)
NOT EXISTS
听起来很正确
SELECT *
FROM t1
WHERE type = 'q'
AND NOT EXISTS (
SELECT 1
FROM t1 AS x
WHERE x.parentid = t1.postid
)