我正在尝试运行此查询。但它显示1行或给出错误查询结果超过1行。
select * from abc where id=(select nameid from xyz where name like '%abc%')
帮助我。
我正在执行一个查询,我从表abc获取名称,父亲姓名和schoolid。现在我想通过在其中运行另一个查询来从table2获取学校名称,但在所有时间它都显示1
答案 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%')