Mysql несколько условий с одного столбца
Всем привет заметил такой странный глюк в MYSQL что условие And не работает с одной страницы. Имеется для примера простая таблица где указано посещение посетителей той или иной комнаты в барделе(шутка).
Необходимо найти клиентов которые были в 1 и в 2 комнате. Я делаю очевидный запрос
SELECT * FROM `test` WHERE room =1 and room =2
и получаю фигу. Причем в документации такие случае нигде не показанны, кроме как увидел у оракла что вроде как можно. Использую mysql 5.7 можете помочь советом?
Ответы (4 шт):
оператор AND в данном случае будет искать выполнение обоих условий в каждой строке, т.е. он ожидает, что одна строка будет иметь как значение комнаты 1, так и 2, что невозможно. если вы хотите вывести клиентов, которые были либо там, либо там, то воспользуйтесь оператором OR. если вас интересуют клиенты, которые посетили обе комнаты, вариантов решения несколько, например, обратиться к таблице 2 раза, выбирая разные номера комнат при разных обращениях, и соединить их при помощи иннер джоин по полю клиента
Комнаты в барделе(шутка) - вынести в отдельную таблицу.
Вот придумал костыль -
select name, sum(room) from Test where room in (1,2) group by name having
sum(room) = 3;
НО
если Иван два раза сходит к одной и тойже во 2 или 1. Уже не будет работать. Нужно выбрать както уникальные 1 и 2 и потом их просумировать. Подзапросом, возможно. Тогда норм.
Подумаю на досуге.
Поставить OR вместо and и запрос будет правильно работать:
SELECT * FROM `test` WHERE room = 1 OR room = 2;
create database test1;
use test1;
create table test (room int, user_id int);
insert into test
values
(1, 1),
(2, 2),
(3, 3),
(1, 4),
(2, 1),
(2, 3),
(1, 3);
select distinct t1.user_id from test t1
join (select * from test) as t2 on t1.user_id = t2.user_id
where t1.room <> t2.room;
результат: 1,3
