获取最大值的varchar列mysql

时间:2019-07-23 16:54:37

标签: mysql wordpress

我需要在“ meta_value”列中获得最大的数字,而其他列等于“ utteranceId”,并且我获得错误的值。

我尝试使用max函数,但没有得到最大的数字。

meta_value列的类型为varchar,并且表中还有更多记录为文本,但是meta_key:“ utteranceId”的记录都是数字。

表:

meta_id post_id meta_key    meta_value
    986     168 utteranceId          1
    987     169 utteranceId          2
    990     170 utteranceId          3
    993     171 utteranceId          4
    996     172 utteranceId          5
    999     173 utteranceId          6
   1002     174 utteranceId          7
   1005     175 utteranceId          8
   1008     176 utteranceId          9
   1011     177 utteranceId         10

我使用的查询:

SELECT post_id, max(meta_value) FROM wp_postmeta where meta_key = "utteranceId";

结果: 168 9

我需要获得: 177 10

i

2 个答案:

答案 0 :(得分:1)

要将varchar作为数字处理:

SELECT MAX(CONVERT(meta_value, SIGNED)) FROM wp_postmeta where meta_key = "utteranceId";

要选择相应的post_id:

SELECT post_id, meta_value FROM wp_postmeta
WHERE CONVERT(meta_value, SIGNED) = (
    SELECT MAX(CONVERT(meta_value, SIGNED))
    FROM wp_postmeta 
    WHERE meta_key = "utteranceId" )
AND meta_key = "utteranceId";

答案 1 :(得分:0)

您尝试使用嵌套查询吗?

SELECT post_id, meta_value FROM wp_postmeta where meta_value = (SELECT 
max(CAST(meta_value AS INT))FROM wp_postmeta where meta_key = "utteranceId");