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

如何在MySQL中获取最长/最短客户名并合并排序?

修正后的MySQL查询语句及说明

你的原SQL存在几个核心问题:

  • 第一个查询仅返回名称的长度数值,而非对应的客户名称;且两个独立的SELECT语句无法互相引用别名。
  • 使用concat()会将两个名称拼接成一个字符串,但你需要的是两条独立的记录。
  • 第二个查询从orders表调用不存在的longest和lowest字段,会直接触发语法错误。

以下是满足需求的正确SQL:

SELECT customer_id AS diff
FROM orders
WHERE LENGTH(customer_id) = (SELECT MAX(LENGTH(customer_id)) FROM orders)
   OR LENGTH(customer_id) = (SELECT MIN(LENGTH(customer_id)) FROM orders)
ORDER BY LENGTH(customer_id) DESC;

逻辑说明:

  1. 两个子查询分别获取orders表中客户名的最长和最短长度。
  2. WHERE条件筛选出长度等于最长或最短值的客户记录。
  3. ORDER BY按名称长度降序排列,确保最长名称排在前面。

执行后会得到你期望的结果:

diff
Nathaniel
John

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 07:10:27