我的代码:
$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。
答案 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)