2013-03-24 68 views
0

例如,如果我的查询返回两行或更多行,我想选择具有最近日期的行。选择具有特定列的最大值的行

我在做这样的事情:

SELECT * FROM Table1 WHERE Name=Mark AND MAX(TIMESTAMP(date(str_to_date(DATE_REGISTERED,'%d/%m/%Y'))))

返回的错误是: #1111 - 无效使用组功能的

回答

1

您应该使用通过声明的顺序:

SELECT * FROM Table1 WHERE Name=Mark 
order by str_to_date(DATE_REGISTERED,'%d/%m/%Y') DESC LIMIT 1 
+0

谢谢!正是我想要的:) – Alex 2013-03-24 22:15:29

2

要限制你的结果只有最近(根据您的示例,根据名为DATE_REGISTERED的字段),您应该做

SELECT * FROM Table1 WHERE Name='Mark' ORDER BY STR_TO_DATE(DATE_REGISTERED,'%d/%m/%Y') DESC LIMIT 1 
+1

+1。 。 。但是您应该将查询更改为'order by date_registered',因为这是问题中的示例,并将引号放在'Mark'的周围,以便语法正确。 – 2013-03-24 22:00:57

+1

但由date_registered命令将按字母顺序对行进行排序,我猜 – 2013-03-24 22:03:32

+0

良好的通话。已编辑来反映这一点。 – 2013-03-24 22:03:47

相关问题