このクエリを実行しようとしています。しかし、それは1行を表示するか、1行以上のエラークエリ結果を返します。
select * from abc where id=(select nameid from xyz where name like '%abc%')
助けて。テーブル abc から名前、父親の名前、学校 ID を取得するクエリを実行しています。今、別のクエリを実行してtable2から学校名が必要ですが、常に1と表示されます
これを試してIN
、複数の行を取得してください
select * from `abc` where id in (select nameid from xyz where name like '%abc%')
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%';
IN
mysql 句を使用します。
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
ます。
これは
select * from abc where id IN (select nameid from xyz where name like '%abc%')