环境:Mysql 对 where in 的结果集进行筛选,保留第一条
如:
select a,b,c from table where a in ("123","456","789");
结果:
123 1111 2222
123 1111 3333
456 1111 2222
456 1111 3333
789 1111 2222
需求:保留符合条件的第一条
123 1111 2222
456 1111 2222
789 1111 2222
请问大佬们,这种怎么查询能直接筛选出来,不用 delete
1
Carseason 2022 年 3 月 10 日
子查询?
|
2
iseki 2022 年 3 月 10 日
正常办法可以窗口查询,以 a 划分窗口保留第一条,歪办法可以调整 SqlMode 然后 group by (MySQL only)。也可以按某种规则聚合主键然后 join
|
3
Amber2011 2022 年 3 月 11 日 via Android
select a,b,min(c) group by a ,b
|
4
sciel 2022 年 3 月 11 日 via iPhone
limit 1 不就好了吗
|
6
F281M6Dh8DXpD1g2 2022 年 3 月 11 日
什么叫第一条?
没有重复的你可以 min 之后 join 回去 有重复的你自己搞个变量算出来哪是第一条呗 |
7
c6h6benzene 2022 年 3 月 11 日
ROW_NUMBER()开窗一下。
|
8
netnr 2022 年 3 月 11 日 via Android
把 in 拆成单个等于 跟 limit 1
UNION ALL 下一个条件 |
10
dddd1919 2022 年 3 月 11 日
group by & order by
|
11
devinww 2022 年 3 月 11 日
distinct 或者 group by
|
12
ikesnowy 2022 年 3 月 11 日 |