2 つのテーブルを結合すると、エラーが発生します
select * from picture where id=(SELECT id FROM user where age= 40 )
#1242 - サブクエリが複数の行を返す
これら 2 つの大きなデータ テーブルを結合する最良の方法は何ですか? 全ての結果を出したい
2 つのテーブルを結合すると、エラーが発生します
select * from picture where id=(SELECT id FROM user where age= 40 )
#1242 - サブクエリが複数の行を返す
これら 2 つの大きなデータ テーブルを結合する最良の方法は何ですか? 全ての結果を出したい
=
で置き換えますIN
select * from picture where id in (select id from user where age = 40)
これは 2 つのテーブルの「半結合」にすぎないことに注意してください。つまり、画像とユーザーの関係ではなく、画像のみが結果として得られます。実際に後者を実行しようとしている場合は、次inner join
の 2 つのテーブルが必要になります。
select * from picture p
join user u on p.id = u.id -- are you sure about this join condition?
where u.age = 40
where 句で に値を代入するとid
、SQL は単一の値を期待します。問題は、2 番目のクエリSELECT id FROM user where age= 40
が複数の行を返すことです。
あなたができることは
select *
from picture
where id in
(select id from user where age = 40)
また
select *
from picture p, user u
where p.id = u.id
and u.age = 40
「=」の代わりに「IN」を使用してみてください
select * from picture where id IN (SELECT id FROM user where age= 40 )
私が見ているものから私が推測していることから、
「picture」テーブルと「user」テーブルがあります。
ちょうど 40 歳のユーザーのすべての写真が必要です。
あなたは、
SELECT *
FROM pictures
WHERE user_id IN (SELECT user_id
FROM users
WHERE user_age = 40)
それはあなたの要件でしたか。私は何か意味がありますか?