我正在尝试构建一个基于列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 的数量可能会有所不同。
我搜索的范围很广,要么留下我无法破译的解释,而且往往不会怀疑所提出的问题与我的问题有关。
非常感谢你的时间。
答案 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