1
saulshao 2020-08-27 19:41:15 +08:00
照下面这样写就行了,直接出结果。
··· SELECT 生成时间 FROM result WHERE `型号`in (1,2,3) ORDER BY 生成时间 DESC LIMIT 1; ··· |
2
jay0726 2020-08-27 19:41:58 +08:00
刚想回复,楼上抢先一步啊
|
3
saulshao 2020-08-27 19:42:26 +08:00
为啥这个 md 语法不起作用?
|
4
wangyanrui 2020-08-27 19:42:35 +08:00 via Android
union 成临时表,然后排序加 limit 1
但是这玩意如果性能压力不是特别大,还是代码处理吧,可读性太差了 |
5
saulshao 2020-08-27 19:42:40 +08:00
写错,markdown
|
6
wangyanrui 2020-08-27 19:43:20 +08:00 via Android
瞎了,一楼正解。以为不是同一个表😂😂
|
7
saulshao 2020-08-27 19:43:47 +08:00
这玩意如果不是性能压力特别大,反而不建议代码处理,因为这东西外面套个函数,就相当于可读性了。
|
8
MeowOvO 2020-08-27 19:48:17 +08:00
|
10
aborigine 2020-08-27 20:46:11 +08:00
select min(生成时间) from result where 型号=1 or 型号=2 or 型号=3
|
11
aborigine 2020-08-27 20:48:41 +08:00
如果生成时间没有索引 那用 min 效率更高
|
13
mcdunc 2020-08-27 22:05:19 +08:00 via Android
lz 是想分别把型号为 1,2,3 的最早生成时间给抽出来吗还是查总体的最早生成时间?如果按 1 楼的那种查出来的不应该是总体的最早吗?
|
14
a719114136 2020-08-27 22:19:20 +08:00 via Android
select 型号,min(时间) from xx where 型号 in(1,2,3) group by 型号
|
15
someonedeng 2020-08-28 00:18:24 +08:00
SELECT * from (SELECT 生成时间,1 as 型号 FROM result WHERE `型号`='1' ORDER BY 生成时间 DESC LIMIT 1 ) t1 union all
SELECT * from (SELECT 生成时间,2 as 型号 FROM result WHERE `型号`='2' ORDER BY 生成时间 DESC LIMIT 1 ) t2 union all SELECT * from (SELECT 生成时间,3 as 型号 FROM result WHERE `型号`='3' ORDER BY 生成时间 DESC LIMIT 1) t3; ![20200828001706.png]( https://i.loli.net/2020/08/28/KsEdn2bCLhtMm9T.png) ![20200828001657.png]( https://i.loli.net/2020/08/28/GfwKF2HCMZ7tmQU.png) |
16
lyusantu 2020-08-28 08:46:02 +08:00
不考虑性能情况下,内层 union,外层再 select * limit 一次即可
|
17
xuanbg 2020-08-28 08:55:05 +08:00
@saulshao 你这个不等价啊,人家是每个型号 1 条,你的可能 3 条都是 1 个型号。
正确答案是使用 union all 关键词。 SELECT 生成时间 FROM result WHERE `型号`='1' ORDER BY 生成时间 DESC LIMIT 1 union all SELECT 生成时间 FROM result WHERE `型号`='2' ORDER BY 生成时间 DESC LIMIT 1 union all SELECT 生成时间 FROM result WHERE `型号`='3' ORDER BY 生成时间 DESC LIMIT 1; |
19
guanhui07 2020-08-28 09:05:00 +08:00
```
unionall ``` |
20
coderfox 2020-08-28 09:42:13 +08:00
SELECT 型号, MAX(生成时间) FROM result WHERE 型号 IN ('1', '2', '3') GROUP BY 型号 ORDER BY 型号, 生成时间 DESC;
|
21
coderfox 2020-08-28 09:47:54 +08:00
@coderfox #20 更正一下,只需要 SELECT 型号, MAX(生成时间) FROM test WHERE 型号 IN ('1', '2', '3') GROUP BY 型号;
|
22
jzmws 2020-08-28 09:54:53 +08:00
考虑用 case ?
|
23
bigpower777 2020-08-28 16:54:46 +08:00
SELECT
s1.d1, s2.d2, s3.d3 FROM (select CREATE_DATE as d1 from account_system where MZ='01' ORDER BY CREATE_DATE desc limit 1) s1, (select CREATE_DATE as d2 from account_system where MZ='02' ORDER BY CREATE_DATE desc limit 1) s2, (select CREATE_DATE as d3from account_system where MZ='03' ORDER BY CREATE_DATE desc limit 1) s3 |
24
gaius 2020-08-28 19:40:37 +08:00 via Android
pg 或者 mysql8 用窗口函数
|