-1

我的代码:

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

我的桌子:

Id --- value1 --- value2 ---- value3

1 --- 测试 --- 6786 ---- 5678

2 --- 测试2 --- 5678 ---- 6786

使用我的代码,结果是:Test 和 Test2

我想选择值 1,其中值 3 等于值 2。而不是以其他方式。

所以对于这个例子,我只需要 Test2 而不是 Test。

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

如果要选择 value1 其中 value2 等于 value3,请使用以下查询:

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因为它有一个 value3,它作为 value2 在表中的某处存在。目前你得到test是因为它有一个 value2,它作为 value3 在表中的某处存在。只需在示例查询中交换 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 回答