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;   |
![]() | 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 用窗口函数 |