私のクエリですが、ここに示した結果は間違っています。SQL IN()が正しく機能していません
SELECT winner
FROM nobel
WHERE
subject = 'Economics' AND
yr IN (
SELECT min('yr')
FROM nobel
WHERE subject = 'Economics'
);
私のクエリですが、ここに示した結果は間違っています。SQL IN()が正しく機能していません
SELECT winner
FROM nobel
WHERE
subject = 'Economics' AND
yr IN (
SELECT min('yr')
FROM nobel
WHERE subject = 'Economics'
);
私はこの問題は、それが常にconstant_value
あるMIN(constant_value)
として評価されるようになり、文字列としてオプティマイザアドレスにこれを作るMIN()
内部yr
を、ラップ引用符であると考えています。
試してみてください。@sagiが指摘するように
SELECT winner FROM nobel
WHERE subject='Economics'
AND yr IN (SELECT min(yr) FROM nobel WHERE subject='Economics');
はい、どうもありがとう!私は少し間違いをします...あなたの答えをありがとう! – porkie
問題がyr
周りの単一引用符です。私はちょうど相関句が=
と一緒に、このようなクエリのために、より典型的であることを指摘したい:
SELECT n.winner
FROM nobel n
WHERE n.subject = 'Economics' AND
n.yr = (SELECT min(yr) FROM nobel n2 WHERE n2.subject = n.subject);
ここin
対=
の使用があなたにマイナーなポイントのように見えるかもしれません。しかし、=
は、最大で1行が返され、in
は複数の行が返される可能性があることを示しています。これは、SQLオプティマイザにとって重要な違いです。
はい、ありがとうございます!私は少し間違いをします...あなたの答えをありがとう!そして私は 'IN'の代わりに '='を使用しようとし、結果も正しいですが、2つの勝者があるので2つの行を示します。たいていの行が返されていると言っています。「hava何かが間違っているか、私は誤解していますか? – porkie
SELECT winner
FROM nobel
WHERE
subject = 'Economics' AND
yr IN (
SELECT min(yr) # ---> just remove quotes in your query, it will work
FROM nobel
WHERE subject = 'Economics'
);
は私たち**サンプルデータを表示**、実際に選択されますどのような私たちを見ると、*これは「間違った」である理由を説明し* ..... –