2014-03-02 69 views
1

我是mysql新手,所以请帮我解决这个问题。选择多行最大日期

我有含有下列的表:

nr | date | hour | user | shop | brand | categ | product | price | promo 
183 02/03/14 17:06 cristi 186  brand1 categ 1 prod 1 299  no 
184 02/03/14 17:06 cristi 186  brand2 categ 2 prod 2 399  yes 
184 01/03/14 17:06 cristi 186  brand3 categ 3 prod 3 199  no 

,我使用是

SELECT * 
FROM evaluari 
WHERE magazin = %s HAVING MAX(data) 

当 “s” 为店铺ID(186)查询。

但这只返回包含02/03/14日期的第一行。如何显示包含相同最大日期的所有行?

非常感谢:),

克里斯蒂。

回答

3

尽量不要使用“date”这样的保留字来命名colums,否则可能会导致问题。 你可以做你想做的是这样的:

SELECT * FROM evaluari WHERE magazin = 186 AND date = (SELECT MAX(date) from evaluari WHERE magazin = 186) 
+1

你想把magazin id设置为max date select或者'SELECT MAX(date)from evaluateari'可能是一个可怕的表扫描... – Ray

+0

@Ray:如何“将magazin id设置为max date select”? –

+0

'(SELECT MAX(date)from assessari where magazin = 186)' – Ray

1

也许,不是最佳的,但在第一次挥杆,你可以这样做

SELECT * FROM evaluari 
    where date IN (SELECT date FROM evaluari WHERE magazin = %s HAVING MAX(date)) 
      AND magazin = %s; 

其实,这真的磨我,讨厌...去揣摩的东西顺畅。敬请期待:)

+1

的'HAVING'条款似乎矫枉过正,在此查询,为什么不'SELECT MAX(日期),其中人杂志=%s'在内部查询? –

+0

@AndréLaszlo是的,这就是我的想法,去寻找另一个更好的解决方案,但上面的工作。 – Ray