我想从表中获取最大值,但它没有给我正确的值(最大值)。没有得到预期的结果从sql查询找到最大值
我使用这个查询来获取价值
SELECT MAX(column_name1) FROM table_name WHERE column_name2 = 'some_value'
列名的数据类型为VARCHAR。这是显示这个意外结果的问题吗?
我想从表中获取最大值,但它没有给我正确的值(最大值)。没有得到预期的结果从sql查询找到最大值
我使用这个查询来获取价值
SELECT MAX(column_name1) FROM table_name WHERE column_name2 = 'some_value'
列名的数据类型为VARCHAR。这是显示这个意外结果的问题吗?
嗯。该值将始终为'some_value'
。如果你想max()
,删除where
条款:
SELECT MAX(column_name)
FROM table_name;
的数据类型无关的问题。
那么你可以使用:
SELECT MAX(salary)
FROM table_name
WHERE name = 'John';
编辑:
如果您存储数字和日期作为字符串,而不是使用本地SQL类型,那么你就一定有问题。 MySQL可以很容易地从字符串转换为数字,所以你可以试试这个:
SELECT MAX(salary + 0)
FROM table_name
WHERE name = 'John';
但是真正的解决方案是修复数据类型。
谢谢Gordon Linoff,但我想从some_vale中获取最大值。例如,假设有四个记录的名称=“John”(这里是some_value)。每个人都有一定的薪水。所以我想只从这四条记录中获得最大薪水值。 – 2014-09-01 13:32:11
我也做过同样的事情... – 2014-09-01 13:42:42
是薪水varchar? – Lennart 2014-09-01 13:42:52
我认为这是由于数据类型。所以请将数据类型更改为int或float并尝试一次。
MAX()函数是用来在整数值要被施加,而不是为VARCHAR
绝对不是这样。 – 2014-09-01 15:20:19
你能举几个例子吗? – 2014-09-01 15:33:15
http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html#function_max – 2014-09-01 15:53:48
我试图在VARCHAR浇铸成int和现在其工作。我改变了这样的查询 -
SELECT MAX(CAST(column_name1为INT))FROM table_name的WHERE column_name2 = 'SOME_VALUE'
结果将始终是相同的值,因为你定义一个WHERE' '它的条件! – 2014-09-01 13:26:55
显示一些数据!如果将**数字**存储在'varchar'列中,您可能会得到意想不到的结果,因为MAX()将应用于**字母**排序 - 不是任何数值..... – 2014-09-01 13:27:25
实际上有更多记录的值为“some_value”,我想从这些记录中只获取其他列的最大值。我在我的问题上做了一个更正,你现在就会知道。这两列是不同的。 – 2014-09-01 13:38:17