MYSQL-返回GROUP BY之前的最新记录
我已经阅读了很多关于与此问题非常相似的问题的问题和答案,主要问题是他们使用MYSQL-返回GROUP BY之前的最新记录,mysql,sql,datetime,group-by,Mysql,Sql,Datetime,Group By,我已经阅读了很多关于与此问题非常相似的问题的问题和答案,主要问题是他们使用LIMIT作为返回最新记录的解决方案,该记录不适用于此查询,因为我需要返回多个结果 逻辑如下: 当记录值生效时,每条记录都有一个生效日期 只有在今天或已经过生效日期的记录才可以收回 在我提取的记录中,根据为该记录输入的“日期”为我提供最新记录 到目前为止,除了这个查询的最后一点逻辑,我已经能够完成所有的工作。我不能在分组依据之后使用订单依据,因为结果已经分组,所以我无法使用MAX()日期。我需要执行WHERE语句中的逻
LIMIT
作为返回最新记录的解决方案,该记录不适用于此查询,因为我需要返回多个结果
逻辑如下:
- 当记录值生效时,每条记录都有一个生效日期
- 只有在今天或已经过生效日期的
记录才可以收回
- 在我提取的记录中,根据为该记录输入的“
日期”为我提供最新记录
分组依据
之后使用订单依据
,因为结果已经分组,所以我无法使用MAX()
日期。我需要执行WHERE
语句中的逻辑
SELECT
aos_products.`name`,
cac_customize_agent_comp_cstm.commission_percentage_c,
cac_customize_agent_comp.date_entered
FROM
wn_writing_number
LEFT OUTER JOIN wn_writing_number_cac_customize_agent_comp_1_c ON wn_writing_number.id = wn_writing_number_cac_customize_agent_comp_1_c.wn_writing946b_number_ida
LEFT OUTER JOIN cac_customize_agent_comp_cstm ON wn_writing_number_cac_customize_agent_comp_1_c.wn_writing3148nt_comp_idb = cac_customize_agent_comp_cstm.id_c
LEFT OUTER JOIN cac_customize_agent_comp ON cac_customize_agent_comp_cstm.id_c = cac_customize_agent_comp.id
LEFT OUTER JOIN aos_products_cac_customize_agent_comp_1_c ON cac_customize_agent_comp_cstm.id_c = aos_products_cac_customize_agent_comp_1_c.aos_produca2b8nt_comp_idb
LEFT OUTER JOIN aos_products ON aos_products_cac_customize_agent_comp_1_c.aos_products_cac_customize_agent_comp_1aos_products_ida = aos_products.id
WHERE
wn_writing_number.id = 'b556d816-f2e6-b78f-c776-576c0542585c'
AND wn_writing_number_cac_customize_agent_comp_1_c.deleted = '0'
AND cac_customize_agent_comp_cstm.effective_date_c <= CURDATE()
GROUP BY aos_products.`name`
和它返回的组一起
+---------+-------------------------+----------------------+
| name | commission_percentage_c | date_entered |
+---------+-------------------------+----------------------+
| Val 2 | 14.75 | 2016-07-07 15:04:02 |
+---------+-------------------------+----------------------+
| Val 1 | 15.25 | 2016-07-06 23:57:28 |
+---------+-------------------------+----------------------+
我想找回的是:
+---------+-------------------------+----------------------+
| name | commission_percentage_c | date_entered |
+---------+-------------------------+----------------------+
| Val 2 | 14.75 | 2016-07-07 15:04:02 |
+---------+-------------------------+----------------------+
| Val 1 | 16 | 2016-07-07 00:31:08 |
+---------+-------------------------+----------------------+
因为我需要最新的VAL 1记录,比如
WHERE the datediff BETWEEN NOW() and date_entered = the smallest amount of time compared with other records
用于最新日期时间
SELECT
aos_products.`name`,
cac_customize_agent_comp_cstm.commission_percentage_c,
max(cac_customize_agent_comp.date_entered) as date_entered
FROM
wn_writing_number
LEFT OUTER JOIN wn_writing_number_cac_customize_agent_comp_1_c ON wn_writing_number.id = wn_writing_number_cac_customize_agent_comp_1_c.wn_writing946b_number_ida
LEFT OUTER JOIN cac_customize_agent_comp_cstm ON wn_writing_number_cac_customize_agent_comp_1_c.wn_writing3148nt_comp_idb = cac_customize_agent_comp_cstm.id_c
LEFT OUTER JOIN cac_customize_agent_comp ON cac_customize_agent_comp_cstm.id_c = cac_customize_agent_comp.id
LEFT OUTER JOIN aos_products_cac_customize_agent_comp_1_c ON cac_customize_agent_comp_cstm.id_c = aos_products_cac_customize_agent_comp_1_c.aos_produca2b8nt_comp_idb
LEFT OUTER JOIN aos_products ON aos_products_cac_customize_agent_comp_1_c.aos_products_cac_customize_agent_comp_1aos_products_ida = aos_products.id
WHERE
wn_writing_number.id = 'b556d816-f2e6-b78f-c776-576c0542585c'
AND wn_writing_number_cac_customize_agent_comp_1_c.deleted = '0'
AND cac_customize_agent_comp_cstm.effective_date_c <= CURDATE()
GROUP BY aos_products.`name`
选择
aos_产品。`name`,
cac、定制、代理、公司、佣金、百分比、,
输入日期的最大值(cac\u自定义\u代理\u公司日期)
从…起
wn_写入编号
左外连接wn_书写(编号)cac_定制(代理)comp_1_c ON wn_书写(编号)id=wn_书写(编号)cac_定制(代理)comp(编号)946b(
左外连接cac\u customize\u agent\u comp\u cstm ON wn\u writing\u number\u cac\u customize\u agent\u comp\u 1\u c.wn\u writing 3148NT\u comp\u idb=cac\u customize\u agent\u comp\u cstm.id\u c
左外连接cac\U自定义\U代理\U cac上的组件\U自定义\U代理\U组件\U cstm.id\U c=cac\U自定义\U代理\U组件id
左外连接aos\U产品\U cac\U定制\U代理\U comp\U 1\U c在cac\U定制\U代理\U comp\U cstm.id\U c=aos\U产品\U cac\U定制\U代理\U comp\U 1\U c.aos\U产品2B8NT\U comp\U idb
左外连接aos_产品上的aos_产品cac_定制_代理_组件1_c.aos_产品cac_定制_代理_组件1aos_产品ida=aos_产品id
哪里
wn_writing_number.id='b556d816-f2e6-b78f-c776-576c0542585c'
和wn_writing_number_cac_customize_agent_comp_1_c.deleted='0'
和cac_定制_代理_comp_cstm.effective_date_c用于最新日期时间
SELECT
aos_products.`name`,
cac_customize_agent_comp_cstm.commission_percentage_c,
max(cac_customize_agent_comp.date_entered) as date_entered
FROM
wn_writing_number
LEFT OUTER JOIN wn_writing_number_cac_customize_agent_comp_1_c ON wn_writing_number.id = wn_writing_number_cac_customize_agent_comp_1_c.wn_writing946b_number_ida
LEFT OUTER JOIN cac_customize_agent_comp_cstm ON wn_writing_number_cac_customize_agent_comp_1_c.wn_writing3148nt_comp_idb = cac_customize_agent_comp_cstm.id_c
LEFT OUTER JOIN cac_customize_agent_comp ON cac_customize_agent_comp_cstm.id_c = cac_customize_agent_comp.id
LEFT OUTER JOIN aos_products_cac_customize_agent_comp_1_c ON cac_customize_agent_comp_cstm.id_c = aos_products_cac_customize_agent_comp_1_c.aos_produca2b8nt_comp_idb
LEFT OUTER JOIN aos_products ON aos_products_cac_customize_agent_comp_1_c.aos_products_cac_customize_agent_comp_1aos_products_ida = aos_products.id
WHERE
wn_writing_number.id = 'b556d816-f2e6-b78f-c776-576c0542585c'
AND wn_writing_number_cac_customize_agent_comp_1_c.deleted = '0'
AND cac_customize_agent_comp_cstm.effective_date_c <= CURDATE()
GROUP BY aos_products.`name`
选择
aos_产品。`name`,
cac、定制、代理、公司、佣金、百分比、,
输入日期的最大值(cac\u自定义\u代理\u公司日期)
从…起
wn_写入编号
左外连接wn_书写(编号)cac_定制(代理)comp_1_c ON wn_书写(编号)id=wn_书写(编号)cac_定制(代理)comp(编号)946b(
左外连接cac\u customize\u agent\u comp\u cstm ON wn\u writing\u number\u cac\u customize\u agent\u comp\u 1\u c.wn\u writing 3148NT\u comp\u idb=cac\u customize\u agent\u comp\u cstm.id\u c
左外连接cac\U自定义\U代理\U cac上的组件\U自定义\U代理\U组件\U cstm.id\U c=cac\U自定义\U代理\U组件id
左外连接aos\U产品\U cac\U定制\U代理\U comp\U 1\U c在cac\U定制\U代理\U comp\U cstm.id\U c=aos\U产品\U cac\U定制\U代理\U comp\U 1\U c.aos\U产品2B8NT\U comp\U idb
左外连接aos_产品上的aos_产品cac_定制_代理_组件1_c.aos_产品cac_定制_代理_组件1aos_产品ida=aos_产品id
哪里
wn_writing_number.id='b556d816-f2e6-b78f-c776-576c0542585c'
和wn_writing_number_cac_customize_agent_comp_1_c.deleted='0'
和cac_定制_代理_comp_cstm.effective_date_c试试这个
SELECT *
FROM
(SELECT
aos_products.`name` as name,
cac_customize_agent_comp_cstm.commission_percentage_c as commission_percentage_c,
cac_customize_agent_comp.date_entered as date_entered
FROM
wn_writing_number
LEFT OUTER JOIN wn_writing_number_cac_customize_agent_comp_1_c ON wn_writing_number.id = wn_writing_number_cac_customize_agent_comp_1_c.wn_writing946b_number_ida
LEFT OUTER JOIN cac_customize_agent_comp_cstm ON wn_writing_number_cac_customize_agent_comp_1_c.wn_writing3148nt_comp_idb = cac_customize_agent_comp_cstm.id_c
LEFT OUTER JOIN cac_customize_agent_comp ON cac_customize_agent_comp_cstm.id_c = cac_customize_agent_comp.id
LEFT OUTER JOIN aos_products_cac_customize_agent_comp_1_c ON cac_customize_agent_comp_cstm.id_c = aos_products_cac_customize_agent_comp_1_c.aos_produca2b8nt_comp_idb
LEFT OUTER JOIN aos_products ON aos_products_cac_customize_agent_comp_1_c.aos_products_cac_customize_agent_comp_1aos_products_ida = aos_products.id
WHERE
wn_writing_number.id = 'b556d816-f2e6-b78f-c776-576c0542585c'
AND wn_writing_number_cac_customize_agent_comp_1_c.deleted = '0'
AND cac_customize_agent_comp_cstm.effective_date_c <= CURDATE()
ORDER BY cac_customize_agent_comp.date_entered DESC) t
GROUP BY t.name
选择*
从…起
(选择
aos_products.`name`作为名称,
cac客户化代理公司佣金百分比作为佣金百分比,
cac\u定制\u代理\u公司日期\u输入为日期\u
从…起
wn_写入编号
左外连接wn_书写(编号)cac_定制(代理)comp_1_c ON wn_书写(编号)id=wn_书写(编号)cac_定制(代理)comp(编号)946b(
左外连接cac\u customize\u agent\u comp\u cstm ON wn\u writing\u number\u cac\u customize\u agent\u comp\u 1\u c.wn\u writing 3148NT\u comp\u idb=cac\u customize\u agent\u comp\u cstm.id\u c
左外连接cac\U自定义\U代理\U cac上的组件\U自定义\U代理\U组件\U cstm.id\U c=cac\U自定义\U代理\U组件id
左外连接aos\U产品\U cac\U定制\U代理\U comp\U 1\U c在cac\U定制\U代理\U comp\U cstm.id\U c=aos\U产品\U cac\U定制\U代理\U comp\U 1\U c.aos\U产品2B8NT\U comp\U idb
左外连接aos_产品上的aos_产品cac_定制_代理_组件1_c.aos_产品cac_定制_代理_组件1aos_产品ida=aos_产品id
哪里
wn_writing_number.id='b556d816-f2e6-b78f-c776-576c0542585c'
和wn_writing_number_cac_customize_agent_comp_1_c.deleted='0'
和cac_定制_代理_comp_cstm.effective_date_c试试这个
SELECT *
FROM
(SELECT
aos_products.`name` as name,
cac_customize_agent_comp_cstm.commission_percentage_c as commission_percentage_c,
cac_customize_agent_comp.date_entered as date_entered
FROM
wn_writing_number
LEFT OUTER JOIN wn_writing_number_cac_customize_agent_comp_1_c ON wn_writing_number.id = wn_writing_number_cac_customize_agent_comp_1_c.wn_writing946b_number_ida
LEFT OUTER JOIN cac_customize_agent_comp_cstm ON wn_writing_number_cac_customize_agent_comp_1_c.wn_writing3148nt_comp_idb = cac_customize_agent_comp_cstm.id_c
LEFT OUTER JOIN cac_customize_agent_comp ON cac_customize_agent_comp_cstm.id_c = cac_customize_agent_comp.id
LEFT OUTER JOIN aos_products_cac_customize_agent_comp_1_c ON cac_customize_agent_comp_cstm.id_c = aos_products_cac_customize_agent_comp_1_c.aos_produca2b8nt_comp_idb
LEFT OUTER JOIN aos_products ON aos_products_cac_customize_agent_comp_1_c.aos_products_cac_customize_agent_comp_1aos_products_ida = aos_products.id
WHERE
wn_writing_number.id = 'b556d816-f2e6-b78f-c776-576c0542585c'
AND wn_writing_number_cac_customize_agent_comp_1_c.deleted = '0'
AND cac_customize_agent_comp_cstm.effective_date_c <= CURDATE()
ORDER BY cac_customize_agent_comp.date_entered DESC) t
GROUP BY t.name
选择*
从…起
(选择
aos_products.`name`作为名称,
cac客户化代理公司佣金百分比作为佣金百分比,
cac\u定制\u代理\u公司日期\u输入为日期\u
从…起
wn_写入编号
左外连接wn_书写(编号)cac_定制(代理)comp_1_c ON wn_书写(编号)id=wn_书写(编号)cac_定制(代理)comp(编号)946b(
左外连接cac\u customize\u agent\u comp\u cstm ON wn\u writing\u number\u cac\u customize\u agent\u comp\u 1\u c.wn\u writing 3148NT\u comp\u idb=cac\u customize\u agent\u comp\u cstm.id\u c
左外连接cac\U自定义\U代理\U cac上的组件\U自定义\U代理\U组件\U cstm.id\U c=cac\U自定义\U代理\U组件id
左外连接aos\U产品\U cac\U定制\U代理\U comp\U 1\U c在cac\U定制\U代理\U comp\U cstm.id\U c=aos\U产品\U cac\U定制\U代理\U comp\U 1\U c.aos\U产品2B8NT\U comp\U idb
左外连接aos_产品上的aos_产品cac_定制_代理_组件1_c.aos_产品cac_定制_代理_组件1aos_产品ida=aos_产品id
哪里
wn_writing_number.id='b556d816-f2e6-b78f-c776-576c0542585c'
和wn_writing_number_cac_customize_agent_comp_1_c.deleted='0'
和cac_定制_代理_comp_cstm.effective_date_c使用输入日期的max()