MySQL 语句问题,请问有没有简便的写法

2019-09-17 18:27:20 +08:00
 sytnishizuiai

https://s2.ax1x.com/2019/09/17/n5qvKx.png (顺便请教下如何发图,找到的发图帖子,教程图片失效了)

我想查询同个 area 下,freight_1,freight_2,freight_3 各自的最小值及其 id。 3 条 sql 去获取很简单,但这个查询本身包含在 foreach 内(循环最大不超过 5 次),所以我想一条 sql 就查出,有这种办法吗?

4357 次点击
所在节点    MySQL
8 条回复
liprais
2019-09-17 18:33:34 +08:00
最小值好办,用 mysql 没办法一条获取到 id,gg
sytnishizuiai
2019-09-17 18:35:26 +08:00
@liprais 嗯 但是分 3 条拿的话,就是 5*3,一共 15 条 sql 了,有点多
l00t
2019-09-17 18:37:00 +08:00
就算是三条 sql,用 union all 拼一下也就是一条了,这也叫个事?
JunoNin
2019-09-17 18:42:54 +08:00
取三个字段里各自的最小值一条 SQL 没办法,发图可以用图床上传链接
sytnishizuiai
2019-09-17 18:45:03 +08:00
@l00t 谢谢,没想到这方法
sytnishizuiai
2019-09-17 18:45:27 +08:00
@JunoNin 我用的图传,不知道怎么上传。。。
okhowang
2019-09-17 19:18:10 +08:00
select id,area,freght1 from table1 where freight_1 = (select min(freight_1) from table1 table2 where table2.area = table1.area)
x3
这样只用 3 条
union 可以拿到 但程序还得处理才能知道哪些列是最小的
如果不需要处理 直接 union 也可以
sytnishizuiai
2019-09-17 22:47:15 +08:00
我直接 order by freight_1 limint 1 union all *3,代码更少点

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/601611

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX