mysql选择给一列的所有行匹配另一行的哪一行?

时间:2015-07-04 18:33:35

标签: mysql

+-----------------+-----------+-------+-------------+
| orders_total_id | orders_id | value |    class    |
+-----------------+-----------+-------+-------------+
|               1 |         1 | 34.00 | ot_subtotal |
|               2 |         1 | 8.56  | ot_shipping |
|               3 |         1 | 2.38  | ot_tax      |
|               4 |         1 | 0.600 | ot_tax      |
|               5 |         2 | 45.54 | ot_subtotal |
|               6 |         2 | 8.56  | ot_shipping |
+-----------------+-----------+-------+-------------+

我想显示属于任何行的所有记录,这些行也有一行具有class = ot_tax。所以在上面,1-4行会匹配,因为它们中的一个(或多个)有一个ot_tax类,它们都有相同的orders_id,但不是5-6行,因为它们也有相同的orders_id但没有class = ot_tax

我想说这里的关键与分组有关,但SQL语法对我来说仍然很陌生。感谢。

1 个答案:

答案 0 :(得分:1)

因此,您希望获得所有包含class='ot_tax'行的订单?

有几种方法,例如使用in谓词:

SELECT * FROM table_name 
WHERE orders_id IN (SELECT orders_id FROM table_name WHERE class='ot_tax')