gpt4 book ai didi

mysql - 如何从具有条件的重复日期行中仅选择一行

转载 作者:行者123 更新时间:2023-11-29 20:58:22 27 4
gpt4 key购买 nike

我有一个如下所示的结果集,这是我从下面提到的查询中获得的:

LEAVE_DATE  | RESOURCE_ID | TYPE
2016-05-17 | 1 | SELF
2016-05-27 | 1 | SELF
2016-05-30 | 0 | ORG
2016-05-30 | 1 | SELF

下面是给出上述结果集的 SQL:

SELECT CONVERT(v.START_DATE + INTERVAL t.n - 1 DAY USING utf8) LEAVE_DATE, v.RESOURCE_ID, v.TYPE
FROM date_tbl t,tbl_leave v
WHERE t.n <= DATEDIFF(v.END_DATE, v.START_DATE) + 1
AND RESOURCE_ID IN (1,0)
AND DAYOFWEEK(CONVERT(v.START_DATE + INTERVAL t.n - 1 DAY USING utf8)) NOT IN (1,7)
ORDER BY LEAVE_DATE

我希望我的 SQL 应返回所有唯一日期,但如果在 RESOURCE_ID 0 和 1 中发现重复日期,我想选择 RESOURCE_ID 0。

预期结果:

LEAVE_DATE  | RESOURCE_ID | TYPE
2016-05-17 | 1 | SELF
2016-05-27 | 1 | SELF
2016-05-30 | 0 | ORG

您能给我一些建议吗?我应该如何实现这个结果?

最佳答案

首先,您进行选择以获取所有值,然后按resource_id对其进行排序,然后将得到的结果按leave_date进行分组。分组依据将获得重复的第一行。

SELECT * FROM 
(
SELECT CONVERT(v.START_DATE + INTERVAL t.n - 1 DAY USING utf8) LEAVE_DATE, v.RESOURCE_ID, v.TYPE
FROM date_tbl t,tbl_leave v
WHERE t.n <= DATEDIFF(v.END_DATE, v.START_DATE) + 1
AND RESOURCE_ID IN (1,0)
AND DAYOFWEEK(CONVERT(v.START_DATE + INTERVAL t.n - 1 DAY USING utf8)) NOT IN (1,7)
ORDER BY v.RESOURCE_ID
)as x GROUP BY x.LEAVE_DATE

关于mysql - 如何从具有条件的重复日期行中仅选择一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37435576/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com