You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL中MIN/MAX函数用法和SQLite有何差异?如何解决相关报错?

问题解答

差异原因

SQLite和MySQL的MIN、MAX函数确实存在用法差异:

  • SQLite的MIN()/MAX()支持两种使用场景:一是作为聚合函数接收单个字段,统计分组内的最小/最大值;二是作为标量函数接收多个参数,直接返回多个参数中的最小/最大值。你语句中使用的MIN(re1.name, re2.name)就是SQLite独有的多参数标量用法。
  • MySQL中的MIN()/MAX()仅作为聚合函数设计,只能接收单个参数,不支持多参数直接传入,因此会触发语法报错。

适配MySQL的调整方案

MySQL提供了专用于多值比较的标量函数LEAST()和GREATEST(),作用是接收多个参数后返回其中的最小/最大值,且支持字符串类型按照字符集排序规则比较大小,完全匹配你的业务需求。你只需要把原语句中的多参数MIN替换为LEAST、多参数MAX替换为GREATEST即可,调整后的语句如下:

SELECT DISTINCT 

LEAST(re1.name, re2.name) AS name1, 
       GREATEST(re1.name, re2.name) AS name2


FROM Rating ra1 JOIN Reviewer re1
ON re1.rID = ra1.rID
CROSS JOIN
Reviewer re2 JOIN Rating ra2 ON re2.rID = ra2.rID
WHERE ra1.mID = ra2.mID
AND re1.rID != re2.rID
AND re1.rID > re2.rID
ORDER BY name1, name2;

调整后的语句逻辑和原SQLite版本完全一致,运行后可得到相同的按字母顺序排序的成对用户名列表。

内容的提问来源于stack exchange,提问作者goldenfish

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 09:36:04