SQL查询无法正常工作

时间:2013-01-30 08:04:35

标签: php sql

我的代码:

$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 --- Test2 --- 5678 ---- 6786

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

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

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

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

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

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

答案 2 :(得分: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;

答案 3 :(得分:0)

在您的示例中,您需要test2,因为它具有值3,该值在表格的某处存在为value2。目前,您获得test因为它具有值2,该值在表格的某处存在为value3。只需在示例查询中交换value2和value3:

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