在从表格获取自定义数据方面需要帮助

+----+----------+---------+----+------+-----+------+------+
| id |   date   |  time   | s  | name | act |  l   |  p   |
+----+----------+---------+----+------+-----+------+------+
|  1 | 04-11-19 | 05:05.0 | my | A    | b   |  100 |  105 |
|  2 | 04-11-19 | 06:06.0 | my | A    | s   |  100 |   97 |
|  3 | 04-11-19 | 03:02.0 | my | B    | s   |  201 |  196 |
|  4 | 03-11-19 | 03:02.0 | my | B    | b   |  202 |  209 |
|  5 | 03-11-19 | 03:02.0 | my | E    | b   | 1202 | 1209 |
|  6 | 03-11-19 | 23:32.0 | my | E    | s   | 1188 | 1180 |
|  7 | 02-11-19 | 19:08.0 | my | C    | b   |  272 |  280 |
|  8 | 04-11-19 | 32:28.0 | my | D    | s   |  356 |  356 |
|  9 | 02-11-19 | 11:09.0 | my | B    | s   |  204 |  198 |
| 10 | 04-11-19 | 21:11.0 | my | E    | b   | 1207 | 1212 |
+----+----------+---------+----+------+-----+------+------+

让我们使用上面提到的名为t的MYSQL表。现在,我要提取以下提到的数据。

  1. 希望获取具有今天日期或最新日期的行的名称,操作,日期,时间,按日期DESC排序,按时间DESC按名称WHERE s = my分组。假设今天的日期为19年4月11日。结果表应如下所述。
+------+-----+----------+---------+
| name | act |   date   |  time   |
+------+-----+----------+---------+
| A    | s   | 04-11-19 | 06:06.0 |
| A    | b   | 04-11-19 | 05:05.0 |
| B    | s   | 04-11-19 | 03:02.0 |
| C    | b   | 02-11-19 | 19:08.0 |
| D    | s   | 04-11-19 | 32:28.0 |
| E    | b   | 04-11-19 | 21:11.0 |
+------+-----+----------+---------+
  1. 希望按日期和时间获取每个名称组WHERE s = my的最近两个条目的名称,操作,日期和时间。结果表应如下所述。

+------+-----+----------+---------+
| name | act |   date   |  time   |
+------+-----+----------+---------+
| A    | s   | 04-11-19 | 06:06.0 |
| A    | b   | 04-11-19 | 05:05.0 |
| B    | s   | 04-11-19 | 03:02.0 |
| B    | b   | 03-11-19 | 03:02.0 |
| C    | b   | 02-11-19 | 19:08.0 |
| D    | s   | 04-11-19 | 32:28.0 |
| E    | b   | 04-11-19 | 21:11.0 |
| E    | s   | 03-11-19 | 23:32.0 |
+------+-----+----------+---------+

我在下面的SQL中写道,这是对整体输出的限制,因为我想限制每个名称组。

从t WHERE s ='my'中选择名称,行为,日期,时间,按名称ASC,日期DESC,时间DESC LIMIT 2

我希望下表作为要求1的输出。


+------+-----+----------+---------+
| name | act |   date   |  time   |
+------+-----+----------+---------+
| A    | s   | 04-11-19 | 06:06.0 |
| A    | b   | 04-11-19 | 05:05.0 |
| B    | s   | 04-11-19 | 03:02.0 |
| C    | b   | 02-11-19 | 19:08.0 |
| D    | s   | 04-11-19 | 32:28.0 |
| E    | b   | 04-11-19 | 21:11.0 |
+------+-----+----------+---------+

OR

期望下表作为要求2的输出。


+------+-----+----------+---------+
| name | act |   date   |  time   |
+------+-----+----------+---------+
| A    | s   | 04-11-19 | 06:06.0 |
| A    | b   | 04-11-19 | 05:05.0 |
| B    | s   | 04-11-19 | 03:02.0 |
| B    | b   | 03-11-19 | 03:02.0 |
| C    | b   | 02-11-19 | 19:08.0 |
| D    | s   | 04-11-19 | 32:28.0 |
| E    | b   | 04-11-19 | 21:11.0 |
| E    | s   | 03-11-19 | 23:32.0 |
+------+-----+----------+---------+

我在论坛上看到了一些有关此事的示例,但无法相互联系。请帮忙。

pmzq1234qzmp 回答:在从表格获取自定义数据方面需要帮助

最后我得到了答案。下面的代码将完成第二个问题。

SELECT name,act,date,time FROM (SELECT *,RANK() OVER (PARTITION BY name ORDER BY date DESC,time DESC) AS rnk FROM t) AS x WHERE rnk <= 2 AND s = 'my'
本文链接:https://www.f2er.com/3163185.html

大家都在问