Как выбрать значения, если эти значения не используются в другой строке? - PullRequest
0 голосов
/ 06 октября 2018

Это моя таблица 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 - это идентификатор записи и родительский элемент Q, а также родительский элемент для A с идентификатором записи 2

Теперь я хотел бы идентифицировать идентификатор записи с типом Q, который ни для кого не является родителем.

Как и в случае с таблицей выше, я бы хотел выбрать 3, 6, 7, 11, 12. Итак,Как мне написать запрос для достижения результата выше.

Ответы [ 3 ]

0 голосов
/ 06 октября 2018
SELECT t1.*
FROM table t1
LEFT JOIN table t2 ON t1.postid=t2.parentid 
WHERE t2.postid is null AND t1.type='Q'
0 голосов
/ 06 октября 2018

NOT EXISTS звучит правильно для этого

SELECT *
FROM t1
WHERE type = 'q'
AND NOT EXISTS (
    SELECT 1
    FROM t1 AS x
    WHERE x.parentid = t1.postid
)
0 голосов
/ 06 октября 2018

Вы можете использовать NOT IN, чтобы сделать это

SELECT * FROM yourtable t1 WHERE t1.postid NOT IN
(SELECT parentid FROM yourtable t2 WHERE parentid IS NOT NULL)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...