Я пытаюсь
SELECT *
FROM `bus_user_perms`
WHERE `Perm_id` NOT IN (SELECT `Perm_id`
FROM `bus_user_perms`
GROUP BY `Perm_username`, `Perm_BusArId`)
но он ничего не возвращает, и я думаю, что это должно быть, потому что, когда я бегу:
SELECT `Perm_id`
FROM `bus_user_perms`
GROUP BY `Perm_username`, `Perm_BusArId`
Я получаю 870 результатов
и когда я бегу
SELECT `Perm_id`
FROM `bus_user_perms`
Я получаю 931 результат.
По сути, я пытаюсь получить 61 результат, а не 870.






В наборе результатов должно быть только 870 различных perm_id, в котором содержится 931. Попробуйте добавить ключевое слово DISTINCT в.
Он ничего не вернет, потому что все ваши Perm_id из внешнего запроса будут иметь запись в подзапросе
Какова структура таблицы и что вы пытаетесь запросить?
Что вы пытаетесь сделать, так это найти дубликаты на основе имени пользователя и группировки busairid. Попробуйте выполнить следующий запрос, чтобы добиться того же.
SELECT `Perm_id`
FROM `bus_user_perms`
GROUP BY `Perm_username`, `Perm_BusArId`
having count(*) > 1
Спасибо! так очевидно, что теперь я вижу ответ лицо ладонь
SELECT `Perm_id`
FROM `bus_user_perms`
GROUP BY `Perm_username`, `Perm_BusArId`
Возвращает все Perm_id с уникальными Perm_username и Perm_BusArId.
SELECT `Perm_id`
FROM `bus_user_perms`
Возвращает все содержащиеся в нем Perm_id.
Может случиться так, что в этой таблице разрешены дублированные Perm_id. Так работает:
SELECT *
FROM `bus_user_perms`
WHERE `Perm_id` NOT IN (SELECT `Perm_id`
FROM `bus_user_perms`
GROUP BY `Perm_username`, `Perm_BusArId`)
ничего не мог вернуть. Чтобы запустить дублированные данные:
SELECT `Perm_id`
FROM `bus_user_perms`
GROUP BY `Perm_username`, `Perm_BusArId`
HAVING count(*) > 1
Я не совсем понимаю, что вы «пытаетесь». См .: Почему я должен предоставлять MCVE для того, что мне кажется очень простым запросом SQL?