如何筛选INNER JOIN SQL命令结果

时间:2013-03-26 22:04:25

标签: mysql sql join inner-join where-clause

我有一张记录表格提交的表格。对于表单的每次提交,都有以下变量:

userid
record
accountName
accountNumber

当用户提交表单时,表格会在每个订单项上填充record值。换句话说,这些值通常由record值链接。我正在尝试使用INNER JOIN将结果过滤到显示useridaccountNameaccountNumber列的表格中。我非常接近这个命令:

SELECT t1.value AS number, t2.value AS name, t3.value AS userid
FROM mytable AS t1
INNER JOIN mytable AS t3
INNER JOIN mytable AS t2 ON t1.record = t2.record
WHERE t1.name = 'addAccountNumber'
AND t2.name = 'addAccountName'
AND t3.name = 'userid'

唯一的问题是每个条目的结果不限于一个。看来桌面上会显示多个实例。

我认为需要在声明的WHERE部分进行一些编辑。在我看来,结果没有取消名称值并过滤结果。有关如何解决此问题的任何建议吗?


更新:

我应该补充说,当我在调用中只包含两行时,我确实得到了正确的过滤结果:

SELECT t1.value AS accountNumber, t2.value AS accountName
FROM mytable AS t1
INNER JOIN mytable AS t2
ON t1.record=t2.record WHERE t1.name='addAccountNumber' AND t2.name='addAccountName'

可能有助于展示我的来源。所以,一般来说,这与添加给我麻烦的userid变量

有关

1 个答案:

答案 0 :(得分:2)

我很难理解你的需求,但也许就是这样。

SELECT t1.value AS number, t2.value AS name, t3.value AS userid

FROM mytable AS t1

INNER JOIN mytable AS t3 ON t1.record = t3.record

INNER JOIN mytable AS t2 ON t1.record = t2.record

WHERE t1.name = 'addAccountNumber'

AND t2.name = 'addAccountName'

AND t3.name = 'userid'