【问题标题】:Is there a way to use sql functions like min as values in where clause of mysql?有没有办法在mysql的where子句中使用像min这样的sql函数作为值?
【发布时间】:2021-04-28 07:02:45
【问题描述】:

我的 mysql 语句有问题...答案是从一个名为 station 的表中获取城市的名称和最小长度的城市长度,该表按城市名称的字母顺序排列我尝试了一些如下所述的语句.

SELECT City, LENGTH(City) FROM Station ORDER BY City WHERE LENGTH(City) = MIN(LENGTH(City));

我也尝试过使用用户定义的变量,如下所示:

SELECT @min := MIN(LENGTH(City)) FROM Station ORDER BY City;

SELECT City, LENGTH(City) FROM Station ORDER BY City WHERE LENGTH(City) = @min;

样本输出:Amo 3

它显示此错误:查看与您的 MySQL 服务器版本相对应的手册,以了解在 'WHERE LENGTH(City) = @min' 附近使用的正确语法

但它不起作用请帮助

【问题讨论】:

  • 欢迎来到 SO。请参阅Why should I provide an MCRE for what seems to me to be a very simple SQL query - 并注意您可能需要 CHAR_LENGTH。
  • 我认为你不能在 where 之前使用 order by。
  • @Strawberry 我不明白你想说什么我已经提供了带有示例输出的代码我应该为你提供 mysql 表数据,因为我是新来的。
  • 链接问题的接受答案对我来说似乎不言自明:-(
  • @shazyriver 我尝试使用 order by after where 但它在第 1 行显示 ERROR 1111 (HY000): Invalid use of group function

标签: mysql sql conditional-statements where-clause min


【解决方案1】:

我有这个解决方案。我可以使用复杂的 sql 语句,通过使用下面的 sql 语句将城市的长度与最小长度相等:

SELECT City, LENGTH(City) FROM Station WHERE LENGTH(City) = (SELECT MIN(LENGTH(City)) FROM Station) ORDER BY City LIMIT 1;

【讨论】:

    猜你喜欢
    • 2012-03-25
    • 2012-03-04
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 2013-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多