Mysql 从col_a in()表格中选择,仅当col_b值匹配时
我试图构造一个查询,该查询基于列a(参数id)获取某些行,但是仅获取的结果具有匹配的列b(维度id) 这是一张代表我正在使用的表。Mysql 从col_a in()表格中选择,仅当col_b值匹配时,mysql,Mysql,我试图构造一个查询,该查询基于列a(参数id)获取某些行,但是仅获取的结果具有匹配的列b(维度id) 这是一张代表我正在使用的表。 parameter_dimension +-------+---------------+----------------+ | id | parameter_id | dimension_id | +-------+---------------+----------------+ | 500 | 1 | 100
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 |
+-------+---------------+----------------+
但是如果我写
SELECT *
FROM parameter_dimension
WHERE parameter_id IN (1,2)
GROUP BY dimension_id
然后,我只希望得到具有维度id的行。
像这样
只有一个查询就可以实现吗?
我更喜欢使用IN(),因为参数_id的数量可能会有所不同
我已经搜索了很广的领域,要么留下了我无法解释的解释,要么经常怀疑所问的问题与我的问题有关。你可以使用具有不同价值的group_concat。您应该按参数\u 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
您可以使用具有不同值的group_concat。您应该按参数\u 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
@草莓,你可以检查一下,我已经在外面做了,它会的work@Strawberry现在它能工作了吗?我刚刚编辑了我的ans检查,我认为
HAVING COUNT(DISTINCT parameter_id)=2
是更为传统的方法。@我试图用您的查询替换Knowledge中的“HAVING”行……,但我无法使其工作。我用错了吗?@Vinciblevence是的。不言而喻,你用错了。除此之外,我不能说,因为我无法破解你的终端,也无法读懂你的心思@草莓,你可以检查一下,我已经在外面做了,它会的work@Strawberry现在它能工作了吗?我刚刚编辑了我的ans检查,我认为HAVING COUNT(DISTINCT parameter_id)=2
是更为传统的方法。@我试图用您的查询替换Knowledge中的“HAVING”行……,但我无法使其工作。我用错了吗?@Vinciblevence是的。不言而喻,你用错了。除此之外,我不能说,因为我无法破解你的终端,也无法读懂你的心思!“SELECT*”和“GROUP BY”不能很好地结合在一起,所以首先考虑您实际希望返回哪些列。@草莓我明白您的意思。不过,我的最后一个问题将是具体的。不过,我很感激你指出了这一点。“选择*”和“分组方式”不能很好地结合在一起,所以首先要弄清楚你到底想要返回哪些列。@我明白你的意思。不过,我的最后一个问题将是具体的。我很感激你指出了这一点。