我需要在“ 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
答案 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");