-1

私のコード:

$stmt = $this->pdo->prepare("SELECT value1 FROM My table au1 WHERE au1.value2 IN (SELECT au2.value3 FROM My table au2)");

私のテーブル:

ID --- 値1 --- 値2 ---- 値3

1 --- テスト --- 6786 ---- 5678

2 --- テスト 2 --- 5678 ---- 6786

私のコードでは、結果は Test と Test2 です。

値 3 が値 2 に等しい値 1 を選択したいと思います。その逆ではありません。

したがって、この例では、Test ではなく Test2 のみが必要です。

4

4 に答える 4

1
i would like to select value 1 where value 3 Is equal to value 2

そのためには、以下のクエリを使用できます。を使用する必要はありませんau。エイリアスを使用するためにエイリアスを使用しないでください。使わなければならないときに使います。

優先クエリ

SELECT value1 FROM `My table` WHERE value2 = value3;

お問い合わせによると

SELECT au1.value1 FROM `My table` au1 WHERE au1.value2 = au1.value3;

ご参考までに

My tableは、テーブルに名前を付ける適切な方法ではありません。そのはずmy_table

于 2013-01-30T08:07:46.613 に答える
1

value2 が value3 と等しい value1 を選択する場合は、次のクエリを使用します。

SELECT value1 FROM My table au1 WHERE au1.value2 = au1.value3
于 2013-01-30T08:07:47.010 に答える
1

My tableは有効なテーブル名ではありません。次のようにエスケープします。

SELECT value1 FROM `My table` au1 
WHERE au1.value2 IN (SELECT au2.value3 FROM `My table` au2);

JOINまたは、代わりにテーブルを使用できます。

SELECT value1 
FROM `My table` au1 
INNER JOIN `My table` au2 ON au1.value2 = au2.value3;
于 2013-01-30T08:08:26.770 に答える
0

あなたの例でtest2は、テーブルのどこかに value2 として存在する value3 があるため、必要です。現在test、テーブルのどこかに value3 として存在する value2 があるため、取得できます。サンプル クエリで value2 と value3 を入れ替えるだけです。

SELECT value1 FROM My table au1 WHERE au1.value3 IN (SELECT au2.value2 FROM My table au2)
于 2013-01-30T08:25:26.900 に答える