MySQL И оператор? - PullRequest
       8

MySQL И оператор?

0 голосов
/ 04 марта 2019

У меня проблема с SQL-запросом.У меня есть такая таблица:

user_id  exception
  2        3
  2        4 

Я хочу выбрать user_id's, который существует, за исключением 3 AND 4

SELECT user_id 
FROM table 
WHERE exception = 3 
  AND exception = 4 

не работает.

спасибо за вашу помощь

Ответы [ 7 ]

0 голосов
/ 04 марта 2019

С group by и min и max:

select user_id 
from tablename 
where exception in (3, 4)
group by user_id
having min(exception) = 3 and max(exception) = 4;
0 голосов
/ 04 марта 2019

Вам нужно self join:

select u1.user_id from 
tbl_user u1 join tbl_user u2
on u1.user_id = u2.user_id
where u1.exception = 3 and u2.exception = 4
0 голосов
/ 04 марта 2019

Я предоставлю вам одно предложение

Создайте два столбца (поля) в таблице базы данных с именами exception_1 и exception_2 .Теперь ваш стол выглядит так:

user_id  exception_1  exception_2
  2        3            4
  2        4            3
  3        3            4 

и затем выполните приведенный ниже запрос.

SELECT user_id FROM table WHERE exception_1 = 3 AND exception_2 = 4 

Надеюсь, это поможет вам.

0 голосов
/ 04 марта 2019

Следующий запрос даст вам пользователей, которые столкнулись с обоими исключениями 3 и 4, если это то, что вы ищете

select user_id from table where exception=3 
intersect 
select user_id from table where exception=4

Или попробуйте

Выберите user_id из таблицы aбыли исключение = 3 и существует (выберите user_id из таблицы b, где исключение = 4 и a.user_id = b.user_id)

0 голосов
/ 04 марта 2019

использование существует

  select t1.* from table_name t1
  where exists ( select 1 from table_name t2 where t1.user_id=t2.user_id
                                            where exception in (3,4)
                                            having count(distinct exception)=2)
0 голосов
/ 04 марта 2019

Использовать агрегацию и having:

SELECT user_id 
FROM table 
WHERE exception in (3, 4)
GROUP BY user_id
HAVING COUNT(DISTINCT exception) = 2; 

Возвращает пользователей, у которых есть оба исключения.Если для пользователей / исключений нет дубликатов, используйте HAVING COUNT(*) = 2.

0 голосов
/ 04 марта 2019

Ваш текущий запрос выбирает user_id, где исключение составляет 3 и 4 - что никогда не может быть истиной, поскольку в одной ячейке содержится только одно значение.

Чтобы выбрать user_id, в котором есть строки 3 и 4, вам нужно выполнить запрос, где исключение составляет 3 или 4, а GROUP BY - user_id.Затем вы можете использовать агрегатную функцию COUNT(), чтобы найти две строки, которые будут строками, где исключение составляет 3 и 4.

Предполагается, что между * 1010 существует уникальное отношение* и exception, что означает, что комбинация user_id и exception никогда не появляется дважды.

SELECT user_id 
FROM table 
WHERE exception IN (3, 4)
GROUP BY user_id
HAVING COUNT(user_id) = 2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...