MySQL: строки, где критерии не существуют

0

Я пытаюсь выбрать 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
Теги:

4 ответа

0
Лучший ответ

Вот как это сделать:

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.

  • 0
    Отлично! Это именно то, что мне было нужно. Я ценю помощь!
0

если я правильно вас понимаю

возможно, этот запрос может помочь вам

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
)
0
SELECT User_ID FROM t WHERE NOT Meta = 'bar';
0

Вы можете попробовать 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') 

и если вам нужен отдельный результат, используйте отдельную статью

  • 0
    Спасибо, попробовал это, и это дает мне всех пользователей и с и без.
  • 0
    невозможно .. проверить лучше и использовать НЕ В
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню