从表中选择col_a in()ONLY col_b值匹配的表

时间:2017-05-22 14:18:28

标签: mysql mysqli

我正在尝试构建一个基于列a (parameter_id)获取某些行的查询,但只提取 结果具有匹配的列b(dimension_id)

这是一张表示我正在使用的表格。

gradlew

如果我写

parameter_dimension
+-------+---------------+----------------+
| id    | parameter_id  | dimension_id   |
+-------+---------------+----------------+
| 500   | 1             | 100            |
| 501   | 1             | 101            |
| 502   | 1             | 102            |
| 503   | 2             | 102            |
+-------+---------------+----------------+

我得到了所希望的

SELECT *
FROM parameter_dimension
WHERE parameter_id IN (1)
GROUP BY dimension_id

但如果我写

+-------+---------------+----------------+
| id    | parameter_id  | dimension_id   |
+-------+---------------+----------------+
| 500   | 1             | 100            |
| 501   | 1             | 101            |
| 502   | 1             | 102            |
+-------+---------------+----------------+

然后我只希望获得具有 dimension_id 的行。 像这样

SELECT *
FROM parameter_dimension
WHERE parameter_id IN (1,2)
GROUP BY dimension_id

是否可以实现这一目标,只需一个查询?

我更喜欢使用 IN(),因为 parameter_id 的数量可能会有所不同。

我搜索的范围很广,要么留下我无法破译的解释,而且往往不会怀疑所提出的问题与我的问题有关。

非常感谢你的时间。

1 个答案:

答案 0 :(得分:0)

您可以使用具有不同值的group_concat。你应该通过parameter_id

订购
 SELECT *
    FROM parameter_dimension
    WHERE parameter_id IN (1,2)
    GROUP BY dimension_id
    having group_concat(distinct parameter_id ORDER BY parameter_id ASC)='1,2'
    order by parameter_id