2013-03-04 6 views
2

Я пытаюсь запустить этот запрос. но он показывает либо 1 строку, либо дает результат запроса ошибки, имеющий более 1 строки.Ошибка при выполнении нижеследующего запроса

select * from abc where id=(select nameid from xyz where name like '%abc%') 

Помогите мне. Я выполняю запрос, где я получаю имя, отчество и школьник из таблицы abc. теперь я хочу имя школы из table2, запустив в нем другой запрос, но за все время он показывает 1

ответ

0

Использовать IN mysql clause.

SELECT * FROM abc WHERE id IN (SELECT nameid FROM xyz WHERE name LIKE '%abc%') 

Потому что, когда условие проверяет только одно значение, но вы сравнивали его с массивом данных, возвращаемых подзапросом.

Что ты делаешь это

if($value = array(1,2,3)) 

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

В другом сравнении слова будет выполнять только на один раз значения как one = one не на one = array('one',two)

так IN пункта будет делать это в MySQL.

1

попробовать это с IN, чтобы получить более одной строки

select * from `abc` where id in (select nameid from xyz where name like '%abc%') 
0

Это должно быть

select * from abc where id IN (select nameid from xyz where name like '%abc%') 
1

Используйте IN для выборки более чем на 1 строку:

select * from abc where id IN (select nameid from xyz where name like '%abc%'); 

EDIT:

select a.*, x.school_name from abc a left join xyz x on a.id = x.nameid where name like '%abc%'; 
+2

+1, так как вы написали более 1 строки – Kamil

+0

Я выполняю запрос, где я получаю имя, отчество и школьник из таблицы abc. теперь я хочу имя школы из таблицы2, запустив в нее другой запрос, но за все время он показывает 1 –

+0

@SaurabhSharma. Затем вам нужно изменить запрос и использовать соединение. –

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