Я пытаюсь выбрать User_ID всех строк, которые не имеют "bar" в столбце Meta.
ID User_ID Meta
1 User1 foo
2 User2 foo
3 User2 bar
4 User3 foo
5 User4 foo
6 User4 bar
Однако я не могу заставить работать. Я могу получить User_Id, у которого есть "бар" 10 различными способами, но не могу понять этого. Ни одна из этих работ не работает:
SELECT User_ID
FROM t
WHERE NOT EXISTS (SELECT * FROM t
WHERE t.meta = 'bar') )
Вышеизложенное дает все пользователи, с и без "бара" в столбце "Мета".
SELECT User_ID
FROM t
WHERE t.meta <> 'bar'
Вышеизложенное дает все пользователи, с и без "бара" в столбце "Мета".
Желаемый вывод должен быть:
User1
User3
Вот как это сделать:
SELECT A.USER_ID
FROM T A
WHERE NOT EXISTS
(SELECT NULL FROM T B WHERE A.USER_ID=B.USER_ID AND B.META='bar');
Посмотрите, как это работает на SQL Fiddle.
если я правильно вас понимаю
возможно, этот запрос может помочь вам
SELECT u.user_id
FROM users u
WHERE NOT EXISTS (
SELECT 1
FROM users v
WHERE v.meta = 'bar'
AND u.user_id = v.user_id
)
SELECT User_ID FROM t WHERE NOT Meta = 'bar';
Вы можете попробовать NOT IN в результате для User_ID с t.meta = 'bar'
SELECT distinct User_ID
FROM t
WHERE User_ID NOT IN (
SELECT User_ID
FROM t
WHERE trim(t.meta) = 'bar')
и если вам нужен отдельный результат, используйте отдельную статью