mysql根据另一个字段的值选择记录

时间:2014-01-29 16:47:03

标签: mysql

我想根据单个记录中的值从单个表中获取一些记录;

这是我的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   |
+-----------+------------+--------+-------+

独特的钥匙indexProductID(10),orderreplacement

我想得到的是,如果我目前正在处理订单#30,我想知道35或40可以用作替代品。看完这里的另一个答案后,这就是我的想法;

SELECT replacement FROM replaces r1 WHERE `ProductID` = '1' AND r1.group = ( SELECT group FROM replaces r2 WHERE order.r1 = 30 )

我尝试过移动方式并以不同方式引用字段,但我总是遇到语法错误。

1 个答案:

答案 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

这个答案需要更多的工作,我认为原来的问题有错误。在上面的评论中回答我的问题。