3
select t1.table1 from table1 as t1
where t1.column1 
in 
(
    select t2.column2 from table2 as t2 
    join 
    table3 as t3  on t2.column1=t3.column1 
    where t3.columnx=5
);

上記は、私が起動しているmysqlクエリです。サブクエリテーブルからのデータも必要でした。

たとえば、テーブル t2 の columnxy とします。

失敗するクエリ

select t1.table1,t2.columnxy from table1 as t1
where t1.column1 
in 
(
    select t2.column2 from table2 as t2 
    join 
    table3 as t3  on t2.column1=t3.column1 
    where t3.columnx=5
);

外側のクエリを選択してそれらを追加すると、意味のある「不明な列」というエラーが発生します。

正しい方法ですか、それとも結合を使用してクエリを書き直す必要がありますか?

4

2 に答える 2

4

結合を使用してクエリを書き直します。

SELECT t1.table1, t.columnxy
FROM   table1 AS t1 JOIN (
  SELECT t2.column2, t2.columnxy
  FROM   table2 AS t2 JOIN table3 AS t3 USING (column1)
  WHERE  t3.columnx = 5
) t ON t1.column1 = t.column2

または:

SELECT t1.table1, t2.columnxy
FROM   table1 AS t1
  JOIN table2 AS t2 ON t1.column1 = t2.column2
  JOIN table3 AS t3 ON t2.column1 = t3.column1
WHERE  t3.columnx = 5
于 2012-10-16T07:10:58.413 に答える
2

その時点で t2 は使用できません。これには結合を使用する必要があります。t1.column1=t2.column2 を使用すると、それを行う必要があります。

于 2012-10-16T07:10:50.227 に答える