SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 09.09.2016 22:13:33

Дмитрий79
Участник
Зарегистрирован: 07.08.2016
Сообщений: 15

Нужна помощь. Я в недоумении.

Доброго времени суток!

Есть таблица(см. файл) и 2 запроса:
1) SELECT * FROM `test2` WHERE `VALUE`!=264;
2) SELECT * FROM `test2` WHERE `VALUE`=264;

Результаты их работы также на скрине.

Я хочу получить для 1-го запроса значения ID только 5 и 6(что логично для человека), запрос выдаёт 5,6,7(что в соответствии с запросом логично для машины).

Помогите, как переделать 1-й запрос, чтобы он выдавал только 5,6.


Прикрепленные файлы:
Attachment Icon screenshot.png, Размер: 16,645 байт, Скачано: 328

Неактивен

 

#2 09.09.2016 22:22:50

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Нужна помощь. Я в недоумении.

если я правильно понял, то

select * from `test2` where id not in (SELECT id FROM `test2` WHERE `VALUE`=264);

Неактивен

 

#3 10.09.2016 01:31:36

Дмитрий79
Участник
Зарегистрирован: 07.08.2016
Сообщений: 15

Re: Нужна помощь. Я в недоумении.

Да, но при таком запросе на большом количестве записей(около 2 млн) выполнение этого запроса уходит в бесконечность.
Оба поля индексированы.

Неактивен

 

#4 11.09.2016 11:55:19

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Нужна помощь. Я в недоумении.

покажите структуру таблицы в виде
show create table `test2`;

какая версия?
в старых быстрее может быть через left join

Неактивен

 

#5 11.09.2016 12:37:56

Дмитрий79
Участник
Зарегистрирован: 07.08.2016
Сообщений: 15

Re: Нужна помощь. Я в недоумении.

Нашёл ответ:

SELECT id
FROM test2
GROUP BY id
HAVING SUM(value=264) = 0

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson