2

このクエリを実行しようとしています。しかし、それは1行を表示するか、1行以上のエラークエリ結果を返します。

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

助けて。テーブル abc から名前、父親の名前、学校 ID を取得するクエリを実行しています。今、別のクエリを実行して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 を使用して複数の行をフェッチします。

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条件は1つの値のみをチェックしますが、サブクエリによって返されたデータの配列と比較していたためです。

あなたがしていたことは

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 に答える