powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка данных
10 сообщений из 10, страница 1 из 1
Выборка данных
    #39028299
Skillsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.

Есть таблица с полями:
id - int
name - varchar
count - int

как выбрать строки в которых count=456 и count=777 и count=56944
в общем вариантов count может быть много, например > 100
...
Рейтинг: 0 / 0
Выборка данных
    #39028313
SharuPoNemnogu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если OR, то count in (много count)
если AND, то count in (много count) having count например > 100
...
Рейтинг: 0 / 0
Выборка данных
    #39028329
Skillsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SELECT * FROM table WHERE count in (456, 777, 958, 12347)
Вот так?
...
Рейтинг: 0 / 0
Выборка данных
    #39028341
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SkillsoftSELECT * FROM table WHERE count in (456, 777, 958, 12347)
Вот так?
Это если надо выбрать те, у кого есть хотя бы один count из перечисленных.
А если надо, чтобы присутствовали не менее чем, например, 3, то
Код: sql
1.
2.
3.
4.
5.
SELECT `name`
FROM `table` 
WHERE `count` IN (456, 777, 958, 12347)
GROUP BY `name`
HAVING COUNT(DISTINCT `count`) >=3


Если нужно наличие ВСЕХ, то условие в HAVING будет, есссно, "=4" (ибо значений - четыре).
Если нужны не name, а полностью записи - то указанную конструкцию следует использовать как подзапрос для отбора:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT *
FROM `table`
WHERE `count` IN (456, 777, 958, 12347)
AND `name` IN ( SELECT `name`
                FROM `table` 
                WHERE `count` IN (456, 777, 958, 12347)
                GROUP BY `name`
                HAVING COUNT(DISTINCT `count`) = 4
              )
...
Рейтинг: 0 / 0
Выборка данных
    #39028347
Skillsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо большое
...
Рейтинг: 0 / 0
Выборка данных
    #39029099
Skillsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Скажите, правильно ли так строить запрос? Если да, то какой максимальной длинны массив можно будет использовать?

$arr = [1,2,3];
$arr2 = [5,6];

"SELECT * FROM test WHERE count IN(".implode(",", $arr).") OR count IN(".implode(",", $arr2).")";
...
Рейтинг: 0 / 0
Выборка данных
    #39029153
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Главное, проверяйте, что в массиве только числа. А размер запроса ограничен max_allowed_packet .
...
Рейтинг: 0 / 0
Выборка данных
    #39029178
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Skillsoft , я бы "склеил" массивы до формирования запроса.
...
Рейтинг: 0 / 0
Выборка данных
    #39029876
Skillsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извиняюсь, не совсем правильно привел пример

$arr = [1,2,3];
$arr2 = [5,6];

"SELECT * FROM test WHERE count IN(".implode(",", $arr).") OR data IN(".implode(",", $arr2).")";

Каждый массив для своей колонки
...
Рейтинг: 0 / 0
Выборка данных
    #39030006
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Целесообразность такого подхода зависит от данных. В некоторых случаях будет предпочтительнее использовать UNION.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка данных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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