SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 02.07.2011 18:12:17

samiccc
Участник
Зарегистрирован: 02.07.2011
Сообщений: 2

Вложенный запрос и IN()

Здравствуйте!

Есть запрос вида:
SELECT * FROM table WHERE table.id IN (SELECT id2 FROM table2 WHERE table2.id2=1)

Причем, в ячейке table2.id2=1 храниться значение VARCHAR = 1,2,3
То есть по сути не вложенный запрос должен иметь вид:

SELECT * FROM table WHERE table.id IN (1,2,3)

Но почему то выборка идет не по 1,2,3, а только по 1.
Как быть, в чем может быть проблема?

Спасибо!

Неактивен

 

#2 03.07.2011 05:23:08

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: Вложенный запрос и IN()

Потому что в подзапросе для IN список должен быть в виде колонки, а не в виде строки со списком значений.

WHERE table.id IN (что-то) - то же самое, что
WHERE table.id = раз OR table.id = два OR ...

В вашем случае это превращается в WHERE table.id = '1,2,3'.

Неактивен

 

#3 06.07.2011 23:47:08

samiccc
Участник
Зарегистрирован: 02.07.2011
Сообщений: 2

Re: Вложенный запрос и IN()

А решить то как?

Неактивен

 

#4 07.07.2011 19:01:45

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Вложенный запрос и IN()

Нормализовать базу данных и выполнять тот запрос, который Вы написали.

Нормализовать подразумевает, что на каждой строке таблицы будет одно
значение, а не несколько.

Неактивен

 

Board footer

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