我有这个mysql表:
+--------------------+---------+-------+
| date | query | count |
|--------------------+---------+-------|
|2012-11-18 09:52:00 | Michael | 1 |
|2012-11-18 10:47:10 | Tom | 2 |
|2012-11-17 15:02:12 | John | 1 |
|2012-11-17 22:52:10 | Erik | 3 |
|2012-11-16 09:42:01 | Larry | 1 |
|2012-11-16 07:41:33 | Kate | 1 |
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
等等。我可以通过以下代码简单地获取结果并按日期排序:
$queries = mysql_query("SELECT * FROM my_tables ORDER BY date DESC LIMIT 20");
while($row = mysql_fetch_array($queries)){
echo "Name ".$row['query']."";
}
但是如何按照特定日期显示的表格中显示元素:
In 2012-11-18:
Michael
Tom
In 2012-11-17:
John
Erik
In 2012-11-16:
Larry
Kate
等等。谢谢!
答案 0 :(得分:2)
这是PHP代码:
$query = mysql_query("SELECT date, query FROM table6 ORDER BY date DESC LIMIT 20");
$group_date = null;
while ($row = mysql_fetch_assoc($query)) {
if ($group_date !== substr($row["date"], 0, 10)) {
$group_date = substr($row["date"], 0, 10);
echo "<h1>$group_date</h1>\n";
}
echo "${row['query']}<br>\n";
}
输出:
2012年11月18日
汤姆
迈克尔
2012年11月17日
埃里克
约翰
二〇一二年十一月一十六日
拉里
凯特
请注意,虽然此代码将行“按行”分组,但可以轻松地将其扩展为按多列分组行。留下来作为练习。
答案 1 :(得分:0)
+1好问题,这个问题并不简单,如何订购查询!!
我认为可以使用GROUP_CONCAT
function完成此操作。这将在您对它们进行分组时将匹配结果组合起来并用逗号分隔它们。你有结果你可以爆炸或做你想做的事情
您必须按日期转换和分组,并将group_concat命名为。然后(在php或whathaveyou中)用逗号分隔名称,并回显日期,然后是每个结果的名称。
编辑看起来你想要一种PHP方法来解决这个问题?糟糕
答案 2 :(得分:-1)
使用此:
SELECT * FROM my_tables WHERE date > "2012-11-16" ORDER BY date LIMIT 4
答案 3 :(得分:-1)
尝试WHERE语句:
select * from my_table where date_column > "2012-11-18 00:00:00" and date_column < "2012-11-18 23:59:59" order by date_column
答案 4 :(得分:-1)
怎么样?
SELECT * FROM my_tables GROUP BY YEAR(date), MONTH(date), DAY(date) ORDER BY date DESC LIMIT 20