帮帮我 我有桌子。 我有"其中st_id在(10,11)"
vf_id --> st_id
--------------
1 --> 10
1 --> 11
2 --> 10
3 --> 11
使用st_id搜索时为10.11,然后按上面的结果给出
我希望结果是:
vf_id --> st_id
--------------
1 --> 10
1 --> 11
--------------
非常感谢你,
答案 0 :(得分:0)
如果您在查询中添加group by子句,您应该能够实现类似于您所要求的内容,例如
SELECT vf_id, st_id
FROM table
WHERE st_id IN (10, 11)
GROUP BY st_id
但是,这实际上只是告诉你至少有一行st_id = 10且至少有一行st_id = 11,如果有多行,你将丢失有关行的各个细节有st_id = 10/11
有关此问题的更多背景信息对于提供更好的答案非常有用
如果这是您需要的数据类型,甚至可能最终需要在多个列上执行GROUP BY
答案 1 :(得分:0)
目前还不清楚你究竟想要什么,但从你的样本数据看,你需要这样的东西。
SELECT MIN(vf_id) AS vf_id,
st_id
FROM t
WHERE st_id IN ( 10, 11 )
GROUP BY st_id;
OR
SELECT vf_id,
st_id,
-- In case you need other columns.
FROM (SELECT t.*,
row_number()
over (
PARTITION BY st_id
ORDER BY vf_id ) AS rn
FROM t
WHERE st_id IN ( 10, 11 )) b --exclude where if you don't need that
WHERE b.rn = 1