我想根据单个记录中的值从单个表中获取一些记录;
这是我的replaces
表,显示了一些测试记录
+-----------+------------+--------+-------+
| ProductID | order | replacement | group |
+-----------+------------+--------+-------+
| 1 | 30 | 35 | 1 |
| 1 | 30 | 40 | 1 |
| 1 | 35 | 30 | 1 |
| 1 | 35 | 40 | 1 |
| 1 | 40 | 30 | 1 |
| 1 | 40 | 35 | 1 |
+-----------+------------+--------+-------+
独特的钥匙index
(ProductID
(10),order
,replacement
)
我想得到的是,如果我目前正在处理订单#30,我想知道35或40可以用作替代品。看完这里的另一个答案后,这就是我的想法;
SELECT replacement FROM replaces r1 WHERE `ProductID` = '1' AND r1.group = ( SELECT group FROM replaces r2 WHERE order.r1 = 30 )
我尝试过移动方式并以不同方式引用字段,但我总是遇到语法错误。
答案 0 :(得分:0)
=
只能用于与单个值进行比较。如果子查询可以返回多行,则必须使用IN
:
SELECT replacement
FROM replaces r1
WHERE `ProductID` = '1'
AND r1.group IN ( SELECT group FROM replaces r2 WHERE r2.order = 30 )
子查询中也有一个不正确的WHERE
子句。
或写一个JOIN
:
SELECT r1.replacement
FROM replaces r1
JOIN replaces r2 ON r1.group = r2.group
WHERE r1.productID = '1'
AND r2.order = 30
这个答案需要更多的工作,我认为原来的问题有错误。在上面的评论中回答我的问题。