获取每行包含相同日期的 MYSQL 表的行数

Posted

技术标签:

【中文标题】获取每行包含相同日期的 MYSQL 表的行数【英文标题】:Get the row count of a MYSQL table where each row contains same date 【发布时间】:2018-08-28 19:41:58 【问题描述】:

我有一个名为“LCI”的 mysql 表,其中分别有流动的列和数据类型as shown in the picture。

Java 应用程序读取两个用户输入用户名和日期UI where user have to give User name and a date.,并将这两个分别与列SUB_IDL_DATE 进行比较。如果它们都与某个记录匹配,则应检索该记录到 java 应用程序中的表模型上。目前,如果只存在一个满足这两个条件的记录,则会发生这种情况。如果有很多,它只检索最新日期的记录

我真正需要的是检查有多少记录与用户名(SUB_ID)和日期(L_DATE)相符。如果有多个记录。应该检索所有记录。

假设2018-03-20(L_DATE)的表中保存了4条记录,分别在SUB_IDs下E/14/E/1E/5E/14,当用户输入用户名E/14,日期为2018-03-20,则表模型应显示保存在SUB_IDE/14下的两条记录。

如我所见,我需要获取用户名 = SUB_ID 和日期 = L_DATE 的 MYSQL 表的行数。然后我可以将行数放入循环中,以便向量可以检索这些记录。

我正在拼命寻找答案。请有人帮我弄清楚如何获取我存储了日期的 MYSQL 表的行数,并且该日期与用户输入相符。谢谢大家。

下面是MYSQL CLI中播种的表结构

mysql> desc lci;
+----------+--------------+------+-----+------------+-------+
| Field    | Type         | Null | Key | Default    | Extra |
+----------+--------------+------+-----+------------+-------+
| L_ID     | varchar(30)  | NO   | PRI |            |       |
| L_DATE   | date         | NO   |     | 0000-00-00 |       |
| HEADING  | varchar(300) | NO   |     |            |       |
| SEC_ID   | varchar(30)  | NO   |     |            |       |
| SUB_ID   | varchar(30)  | YES  |     | NULL       |       |
| I_ID     | varchar(30)  | YES  |     | NULL       |       |
| NEW_INS  | varchar(100) | YES  |     | NULL       |       |
| SEND_ID  | varchar(30)  | YES  |     | NULL       |       |
| NEW_SEND | varchar(100) | YES  |     | NULL       |       |
| R_DATE   | datetime     | YES  |     | NULL       |       |
| L_DATE_  | time         | YES  |     | NULL       |       |
+----------+--------------+------+-----+------------+-------+
11 rows in set (0.02 sec)

下面是我输入表格LCI的数据

mysql> select * from lci;
+-------+------------+---------------------+-----------------------+--------+------+---------+---------+----------+---------------------+----------+
| L_ID  | L_DATE     | HEADING             | SEC_ID                | SUB_ID | I_ID | NEW_INS | SEND_ID | NEW_SEND | R_DATE              | L_DATE_  |
+-------+------------+---------------------+-----------------------+--------+------+---------+---------+----------+---------------------+----------+
| 1     | 2017-12-28 | qwerty test         | Development Section   | E/14   | SPDA |         | Item 1  |          | 2017-12-19 00:00:00 | NULL     |
| 10630 | 2018-01-02 | test                | Development Section   | DEV1   | CCO  |         | Item 4  |          | 2018-01-04 00:00:00 | NULL     |
| 12    | 2018-01-02 | test                | Development Section   | E5     | CSO  |         | Item 4  |          | 2018-01-04 10:59:12 | NULL     |
| 14    | 2018-01-04 | Testing             | Establishment Section | E/14   | SPDA |         | Item 2  |          | 2018-01-17 10:54:57 | 10:54:32 |
| 15    | 2018-01-04 | Testing             | Establishment Section | E/14   | CSO  |         | Item 3  |          | 2018-01-08 10:54:57 | 10:54:32 |
| 2     | 2018-01-03 | test                | Development Section   | E14    | PSC  |         | Item 2  |          | 2018-01-05 10:59:12 | NULL     |
| 3     | 2018-01-01 | test                | Establishment Section | E5     | CSO  |         | Item 2  |          | 2018-01-04 11:35:02 | NULL     |
| 34    | 2018-01-15 | 2018 action plan    | Development Section   | E3     | PSC  |         | Item 1  |          | 2018-01-15 15:49:38 | NULL     |
| 4     | 2018-01-02 | test                | Development Section   | DEV1   | CCO  |         | Item 4  |          | 2018-01-04 00:00:00 | NULL     |
| 5     | 2018-01-02 | test                | Development Section   | DEV1   | CCO  |         | Item 4  |          | 2018-01-04 00:00:00 | NULL     |
| 6     | 2018-01-03 | you can do this     | Establishment Section | E14    | CSO  |         | Item 1  |          | 2018-01-10 12:57:04 | NULL     |
| 678   | 2018-03-07 | qwerty              | Establishment Section | E/1    | CSO  |         | Item 1  |          | 2018-03-06 12:28:37 | 12:28:24 |
| 679   | 2018-03-07 | qwerty              | Establishment Section | E/14   | CSO  |         | Item 1  |          | 2018-03-06 12:28:37 | 12:28:24 |
| 7     | 2018-01-04 | yes you can do this | Establishment Section | E/14   | CSO  |         | Item 1  |          | 2018-01-09 14:10:56 | 14:10:36 |
+-------+------------+---------------------+-----------------------+--------+------+---------+---------+----------+---------------------+----------+
14 rows in set (0.00 sec)

【问题讨论】:

这不是一个完整的问题,因为我们看不到您的数据,也看不到您的表结构。请在您的问题中包含此信息。 感谢您的指正。我添加了它们。 我希望 SO 以某种方式强迫人们提供 DDL,或者至少是一个 sqlfiddle 【参考方案1】:

您不需要从数据库中获取记录数来填写您的向量 您可以使用返回数据集的大小。

您仍然可以通过此查询获得记录数:

select count(*) from LCI where username = ? and date= ?

或者

如果您想要记录及其计数,请使用此方法,但这不是正确的方法:

select * , (select count(*) from LCI where  username = ? and date= ?  ) as thecount
from LCI 
where username = ? and date= ?

【讨论】:

谢谢 Mohamed Adly,让我试试。 :) 再次感谢。

以上是关于获取每行包含相同日期的 MYSQL 表的行数的主要内容,如果未能解决你的问题,请参考以下文章

计算日期尚未过去的行数

熊猫以时间为索引获取特定日期的行数

计算日期范围内每个日期的行数

MySQL触发器将日期插入具有唯一匹配ID的行

根据日期和在 Snowflake 中的另一个表中为该日期列出的最大行数限制插入到表中的行

mysql获取表中数据行数