我有以下查询。 我只需要选择最旧的行(按DATE列)。保持我的条件(在哪里和分组)
SELECT
table.*
from database.table
where views = $views AND sales>23
group by
name
更清楚一点就像传递frm这第一张桌子
+--------------------+-----------+--------------------+
| USER | id | DATE |
+--------------------+-----------+--------------------+
| sue1 | 494 | 2014-06-23 12:08:29|
| sue2 | 494 | 2014-06-25 12:08:29|
| sue3 | 494 | 2014-06-27 12:08:29|
| sue4 | 520 | 2014-06-26 12:08:29|
| sue5 | 570 | 2014-06-24 12:08:29|
+--------------------+-----------+--------------------+
到第二个
+--------------------+-----------+--------------------+
| USER | id | DATE |
+--------------------+-----------+--------------------+
| sue3 | 494 | 2014-06-27 12:08:29|
| sue4 | 520 | 2014-06-26 12:08:29|
| sue5 | 570 | 2014-06-24 12:08:29|
+--------------------+-----------+--------------------+
marko.c
答案 0 :(得分:1)
您可以使用以下子选择方式。
SELECT
t1.*
from database.table t1
where t1.views = $views AND t1.sales>23
and t1.date in (select min(date) from table where id = t1.id group by id)
group by
t1.name ;
答案 1 :(得分:0)
Use subselect
SELECT * FROM (SELECT table.*....) WHERE `DATE` ... ORDER BY `DATE` LIMIT ...
or having
SELECT table.* ... GROUP BY name HAVING `DATE` ...
答案 2 :(得分:0)
不是肯定的,这就是你所追求的,你的团队似乎很奇怪。也许简单地通过扩展滥用mySQL组可能会导致问题的一部分......作为一个规则,任何加重的事都应该有一个组,否则......为什么你需要一个组? (我在这里看不到聚合......)
SELECT
table.*
from database.table DT1
where Dt1.views = $views AND Dt1.sales>23
and dt1.date = (Select min(date) from database.table DT2 where user=Dt1.user)
group by name