2013-09-19 9 views
1

У меня проблема с версией mysql 5.6. Извините, если мой английский сосет, и извините, если формат неправильный, im спешите.# 1241 - Операнд должен содержать 1 столбец IN

Mysql бросает мне эту ошибку «# 1241 - Операнд должен содержать 1 колонку (ы)» из этого запроса:

SELECT DISTINCT (P.`P_nombre`, P.`P_raza`) 

FROM `Perros` AS P, 
     `Adiestramientos` as A 

WHERE P.`P_codigo` = A.`P_codigo` AND A.`A_nroLegajo` = '1500' 
AND P.`P_codigo` NOT IN(
     SELECT A.`P_codigo` 
     FROM `Adiestramientos` as A 
     WHERE A.`A_nroLegajo`= '4600' 
     ) 

Это, кажется, работает отлично на Mysql 5.0, проблема, как представляется, на IN оператор

Надеюсь, вы можете мне помочь.

Спасибо!

ответ

1

Вы используете идентификатор A для той же таблицы дважды - как в внутреннем, так и в внешнем запросе. Измените один на другой, например. A2:

SELECT DISTINCT P.`P_nombre`, P.`P_raza` 
FROM `Perros` AS P, 
     `Adiestramientos` as A 
WHERE P.`P_codigo` = A.`P_codigo` AND A.`A_nroLegajo` = '1500' 
AND P.`P_codigo` NOT IN(
     SELECT A2.`P_codigo` 
     FROM `Adiestramientos` as A2 
     WHERE A2.`A_nroLegajo`= '4600' 
     ) 
+0

Нет, этот запрос бросает мне ту же ошибку. – Hernan

+0

Какова ошибка, которую вы получаете? –

+0

@HernandaSilva: - Вы пытались удалить скобки из своего предложения DISTINCT ???? –

1

error который вы получаете означает, что: -

MySQL не поддерживает высказывания следующего вида:

SELECT * FROM t1 WHERE s1 IN (SELECT s2 FROM t2 ORDER BY s1 LIMIT 1) 

В вашем случае вы должны изменить Indentifier А, как он используется дважды.

Попробуйте это: -

SELECT DISTINCT P.`P_nombre`, P.`P_raza` 
FROM `Perros` AS P, 
     `Adiestramientos` as A 
WHERE P.`P_codigo` = A.`P_codigo` AND A.`A_nroLegajo` = '1500' 
AND P.`P_codigo` NOT IN(
     SELECT A1.`P_codigo` 
     FROM `Adiestramientos` as A1 
     WHERE A1.`A_nroLegajo`= '4600' 
     ) 
1

Отбросьте скобки в вашем списке выбора:

SELECT DISTINCT 
     P.`P_nombre`, P.`P_raza` 
FROM `Perros` AS P, 
     `Adiestramientos` as A 
WHERE P.`P_codigo` = A.`P_codigo` 
     AND A.`A_nroLegajo` = '1500' 
     AND P.`P_codigo` NOT IN 
     (
     SELECT A2.`P_codigo` 
     FROM `Adiestramientos` as A2 
     WHERE A2.`A_nroLegajo`= '4600' 
     ) 

MySQL не позволяет выбрать кортежи в одном поле, и DISTINCT относится ко всему SELECT список в любом случае.

+0

Правильно, решено – Hernan

Смежные вопросы