2

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

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

帮我。我正在执行一个查询,我从表 abc 中获取姓名、父亲姓名和 schoolid。现在我想通过在其中运行另一个查询来从 table2 中获得学校名称,但始终显示 1

4

4 回答 4

1

试试这个IN以获得超过一排

 select * from `abc` where id in (select nameid from xyz where name like '%abc%')
于 2013-03-04T11:18:57.777 回答
1

使用 IN 获取多于 1 行:

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%';
于 2013-03-04T11:19:14.420 回答
0

使用INmysql 子句。

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)

soIN子句将在MySQL.

于 2013-03-04T11:18:57.213 回答
0

这应该是

select * from abc where id IN (select nameid from xyz where name like '%abc%')
于 2013-03-04T11:19:01.877 回答