SQL "in" оператор - PullRequest
       1

SQL "in" оператор

1 голос
/ 21 января 2012

БД - это MySQL.Есть одна таблица, структура которой показана ниже:

select * from table1
id column1
-- --------
1  3,4,5
2  3,7,8

И sql, которая работает неправильно:

SELECT * FROM table1 WHERE 3 in (column1)

Я знаю, что структура таблицы не верна.Но это было сделано до меня.Что вы можете предложить мне таким образом?или что то будет выполнять смысл этого sql?Благодарю.

Ответы [ 4 ]

6 голосов
/ 21 января 2012

Пожалуйста, нормализуйте свой стол.Прочитайте, почему хранение значений через запятую в столбце БД действительно плохо .

Если вам не разрешено, используйте функцию FIND_IN_SET():

SELECT * 
FROM table1 
WHERE FIND_IN_SET(3, column1)
1 голос
/ 21 января 2012

Использовать find_in_set Возвращает позицию значения в строке значений, разделенных запятыми

SELECT * 
FROM table1 
WHERE FIND_IN_SET(3, column1)
1 голос
/ 21 января 2012

Похоже, вы хотите

SELECT * FROM table1 WHERE column1 LIKE "%,3,%" OR column1 LIKE "3,%" OR column1 LIKE "%,3"
0 голосов
/ 21 января 2012

IN - это оператор, который вы используете для сравнения того, находится ли левый операнд в одном из значений, возвращаемых подзапросом из одного столбца. Если вы хотите использовать IN, вам придется использовать WHERE 3,4,5 IN (column1)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...