2011-12-20 5 views
1

MySQL(phpmyadmin)とPHPを使用してネストされたクエリを実行しようとしていますが、どちらも同じ出力になります。MySQLクエリネストされたクエリ

注:各クエリだけでは必要な出力を提供します

SELECT `field1` FROM `table2` WHERE ID=1 

以下のように有効な出力を提供しますが、テーブル名は、原因プロジェクト

SELECT * FROM `table1` WHERE ID="SELECT `field1` FROM `table2` WHERE ID=1" 

これがゼロ行を返すの感度にクリップされていますメインクエリの最初の部分でこの出力を使用すると、必要なものも提供されます。助けてください。

+3

テーブル名だけでそれを譲ることができる場合は、*非常に敏感である必要があります。 :) – GolezTrol

答えて

5

引用符で囲んではいけません。代わりに括弧で囲み:

SELECT * FROM `table1` WHERE ID=(SELECT `field1` FROM `table2` WHERE ID=1) 

複数の行がサブクエリから期待されている場合、あなたはおそらく、しかしJOINとのより良いパフォーマンスを得られます代わりにWHERE ID=(SELECT...)

WHERE ID IN (SELECT...)を使用します。

SELECT table1.* 
FROM 
    table1 JOIN table2 ON table1.ID = table2.field1 
WHERE table1.ID = 1 
+0

ちょうどそれを考え出した:)。ありがとう。 2分で正解とマークします(ここでのルール) – sikas

2

を入れ子になったクエリは間違っています。

SELECT * FROM `table1` WHERE ID in (SELECT `field1` FROM `table2` WHERE ID=1) 

あなたの場合、table1.IDと2番目のクエリを含む文字列を比較しています。

関連する問題