Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Нужна помощь. Я в недоумении. / 14 сообщений из 14, страница 1 из 1
10.09.2016, 12:21
    #39307023
dmaytry79
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь. Я в недоумении.
Доброго времени суток!

Есть таблица(см. файл) и 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.
...
Рейтинг: 0 / 0
10.09.2016, 12:28
    #39307025
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь. Я в недоумении.
dmaytry79WHERE `VALUE`!=264;dmaytry79Я хочу получить для 1-го запроса значения ID только 5 и 6(что логично для человека)Я, наверное, не человек. Для меня не логично хотеть одно, а писать другое.

Опишите задачу целиком.
...
Рейтинг: 0 / 0
10.09.2016, 12:35
    #39307026
dmaytry79
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь. Я в недоумении.
Представим, что ID - CLAIM(ID заявки), а VALUE - SELLER(ID продавца)

Фактически мне нужно получить 2 набора:
1-й набор - заявки, принадлежащие продавцу с SELLER=264(это номер 7);
2-й набор - заявки, не принадлежащие продавцу SELLER=264(это номера 5,6).

Вот такая задача.
...
Рейтинг: 0 / 0
10.09.2016, 13:04
    #39307033
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь. Я в недоумении.
dmaytry791-й набор - заявки, принадлежащие продавцу с SELLER=264(это номер 7);
Код: sql
1.
SELECT id FROM `test2` WHERE `VALUE`=264



dmaytry792-й набор - заявки, не принадлежащие продавцу SELLER=264(это номера 5,6).
Код: sql
1.
2.
3.
SELECT DISTINCT id
FROM `test2` t1 LEFT JOIN `test2` t2 ON t1.id=t2.id AND t2.`VALUE`=264
WHERE t2.id IS NULL
...
Рейтинг: 0 / 0
10.09.2016, 14:25
    #39307045
dmaytry79
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь. Я в недоумении.
Спасибо большое за ответ.
Однако этот запрос виснет на выборке в 150 тыс записей - выполняется бесконечно долго.
...
Рейтинг: 0 / 0
10.09.2016, 16:06
    #39307063
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь. Я в недоумении.
dmaytry79Однако этот запрос виснет на выборке в 150 тыс записей - выполняется бесконечно долго.Показывайте DDL таблицы и план запроса.
...
Рейтинг: 0 / 0
10.09.2016, 16:55
    #39307073
dmaytry79
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь. Я в недоумении.
Я разобрался. Использую другой запрос:

Код: plsql
1.
SELECT DISTINCT id FROM `test2` WHERE id NOT IN (SELECT id FROM `test2` WHERE `VALUE`=262);

0.17199 сек.

Код: plsql
1.
2.
3.
SELECT DISTINCT t1.id
FROM `test2` t1 LEFT JOIN `test2` t2 ON t1.id=t2.id AND t2.`VALUE`=262
WHERE t2.id IS NULL;

2.3572 сек.

через LEFT JOIN дольше в 10(!) раз!!!

Большое спасибо, miksoft за конструктивный диалог!
Индексировать надо было оба поля, тогда запросы не повисают!
Век живи, век учись!
...
Рейтинг: 0 / 0
10.09.2016, 17:04
    #39307077
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь. Я в недоумении.
dmaytry79через LEFT JOIN дольше в 10(!) раз!!!Не должно быть так, обычно наоборот бывает.

Какая версия MySQL?
...
Рейтинг: 0 / 0
10.09.2016, 17:10
    #39307078
dmaytry79
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь. Я в недоумении.
Код: plsql
1.
SELECT VERSION()

5.1.73-log
...
Рейтинг: 0 / 0
10.09.2016, 18:07
    #39307092
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь. Я в недоумении.
dmaytry79
Код: plsql
1.
SELECT VERSION()


5.1.73-logТогда тем более LEFT JOIN должен быть быстрее.
...
Рейтинг: 0 / 0
10.09.2016, 22:38
    #39307123
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь. Я в недоумении.
Код: sql
1.
2.
3.
4.
SELECT id
FROM test2
GROUP BY id
HAVING SUM(value=264) = 0
...
Рейтинг: 0 / 0
11.09.2016, 13:40
    #39307182
dmaytry79
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь. Я в недоумении.
Akina, большое спасибо!

Просто гениальный запрос!
...
Рейтинг: 0 / 0
11.09.2016, 22:34
    #39307299
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь. Я в недоумении.
Запрос-то красив, спору нет. Вот только медленный, ибо потребует полного сканирования всей таблицы.
...
Рейтинг: 0 / 0
11.09.2016, 23:18
    #39307311
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь. Я в недоумении.
Или индекса (id, value[, ...]), буде такой имеется.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Нужна помощь. Я в недоумении. / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]