执行以下查询时出错

时间:2013-03-04 11:17:12

标签: php mysql

我正在尝试运行此查询。但它显示1行或给出错误查询结果超过1行。

select * from abc where id=(select nameid from xyz where name like '%abc%')
帮助我。 我正在执行一个查询,我从表abc获取名称,父亲姓名和schoolid。现在我想通过在其中运行另一个查询来从table2获取学校名称,但在所有时间它都显示1

4 个答案:

答案 0 :(得分:1)

使用IN尝试获取多行

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

答案 1 :(得分:1)

使用IN获取多于一行:

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

修改

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

答案 2 :(得分:0)

使用IN mysql子句。

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

因为where条件只检查一个值,但是你将它与子查询返回的数据数组进行比较。

你做的是

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

总是会返回false,所以你需要使用能让你查看数组并给出结果的东西。

换句话说,比较只会在one = one而不是one = array('one',two)

上执行一次。

所以IN子句会在MySQL中执行此操作。

答案 3 :(得分:0)

这应该是

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