环境: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-03-10 23:36:52 +08:00
子查询?
|
2
iseki 2022-03-10 23:42:43 +08:00
正常办法可以窗口查询,以 a 划分窗口保留第一条,歪办法可以调整 SqlMode 然后 group by (MySQL only)。也可以按某种规则聚合主键然后 join
|
3
Amber2011 2022-03-11 00:08:20 +08:00 via Android
select a,b,min(c) group by a ,b
|
4
sciel 2022-03-11 00:17:19 +08:00 via iPhone
limit 1 不就好了吗
|
6
liprais 2022-03-11 00:49:48 +08:00
什么叫第一条?
没有重复的你可以 min 之后 join 回去 有重复的你自己搞个变量算出来哪是第一条呗 |
7
c6h6benzene 2022-03-11 00:54:40 +08:00
ROW_NUMBER()开窗一下。
|
8
netnr 2022-03-11 08:45:38 +08:00 via Android
把 in 拆成单个等于 跟 limit 1
UNION ALL 下一个条件 |
10
dddd1919 2022-03-11 09:25:12 +08:00
group by & order by
|
11
devinww 2022-03-11 09:33:25 +08:00
distinct 或者 group by
|
12
ikesnowy 2022-03-11 16:26:01 +08:00 1
|