【问题标题】:mysql - get highest value from virtual columnmysql - 从虚拟列中获取最高值
【发布时间】:2015-11-03 04:58:05
【问题描述】:
SELECT *, REPLACE(number_option, 'Issue ', '') AS new_number_option FROM
jgl_article WHERE status = 1 AND topic = 'Current Issues' ORDER BY id ASC

new_number_option 列返回:

1

1

1

2

2

3

3

我想从 new_number_option 列中获取最高值。这里 3 是最高值。所以,我想获取包含最高价值的记录。我在上面的查询中尝试了 HAVING MAX(new_number_option) 。但是,它不起作用。

【问题讨论】:

    标签: mysql sql select where


    【解决方案1】:

    试试CAST,因为您的列类型是string

    CAST(new_number_option as SIGNED)
    

    使用

    MAX( CAST(REPLACE(number_option, 'Issue ', '') AS UNSIGNED) )
    

    【讨论】:

    • 它只返回第一行。它不返回包含最高值的行
    • SELECT *, MAX( CAST(REPLACE(number_option, 'Issue ', '') AS UNSIGNED) ) AS new_number_option FROM jgl_article WHERE status = 1 AND topic = 'Current Issues'
    • 试试这个查询@Beginner
    • 也试过了。不会工作。我想获取所有包含 new_number_option = MAX(new_number_option) 的记录
    • SELECT * from jgl_article WHERE REPLACE(number_option, 'Issue ', '') in (SELECT MAX(CAST(REPLACE(number_option, 'Issue ', '') AS UNSIGNED)) from jgl_article WHERE status = 1 AND 主题 = '当前问题')
    【解决方案2】:
    SELECT JA.*
      FROM
    jgl_article JA INNER JOIN
         (SELECT MAX( CAST(REPLACE(number_option, 'Issue ', '') AS UNSIGNED) ) AS MAX_number_option FROM
          jgl_article) T
                  ON CAST(TRIM(JA.number_option) as UNSIGNED) = T.MAX_number_option
    WHERE JA.status = 1 AND JA.topic = 'Current Issues'
    

    这会起作用

    希望这会有所帮助..

    【讨论】:

    • 再试一次,我错过了昏迷
    • 返回空结果集
    • 在 'as UNSIGNED 附近使用) = T.MAX_number_option WHERE JA.status = 1 AND JA.topic = 'Current ' 在第 6 行
    • 是的..别名错误..我已修复
    • “订单子句”中的未知列“JA.new_number_option”
    猜你喜欢
    • 2023-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-26
    • 2018-01-01
    • 1970-01-01
    • 2010-10-28
    相关资源
    最近更新 更多