gpt4 book ai didi

java - 查询在 mysql 中两次显示不同月份的相同数据(或值)

转载 作者:行者123 更新时间:2023-11-28 23:57:57 24 4
gpt4 key购买 nike

假设我有一个记录用户 ID 的用户表和一个记录用户月份账单的 Bill_record 表。假设 XYZ 没有支付 1 月和 2 月的账单。现在在 3 月,我想查看前几个月的到期用户列表。如果运行

select c.User_ID from user as c 其中c.User_ID不在“
+ "(从 Bill_record 中选择 b.User_ID 作为 b,其中 "
+ "b.User_ID = c.User_ID 和 "
+ "(b.Date between 2015-1-1 and 2015-2-28"
+ "))

它只显示 XYZ 一次,但我想连同月份名称一起看两次。在这种情况下,查询是什么?

Update1:​​这里附上我的表格结构。 this is client table. primary key is User_ID this is Bill_Record table. PK is SL (serial no. auto incremented)

现在从bill_record表中可以看到用户10001,10002没有支付3月、4月和5月的账单。我想要一个包含 1001 和 10002 三次以及月份鬃毛的列表。

最佳答案

您应该按月分解查询以进行检查。按照您当前编写查询的方式,您只查找在 1 月 1 日至 2 月 28 日期间未支付任何账单的用户。

获取一月份没有支付账单的所有用户:

SELECT 'January', u.id
FROM users u
WHERE u.id NOT IN(
SELECT user_id
FROM bills
WHERE MONTH(payment) = 1);

同样,您也可以在二月做同样的事情。要组合它们,您可以使用 UNION:

SELECT 'January', u.id
FROM users u
WHERE u.id NOT IN(
SELECT user_id
FROM bills
WHERE MONTH(payment) = 1)
UNION
SELECT 'February', u.id
FROM users u
WHERE u.id NOT IN(
SELECT user_id
FROM bills
WHERE MONTH(payment) = 2);

这是一个 SQL Fiddle示例。

关于java - 查询在 mysql 中两次显示不同月份的相同数据(或值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31004776/

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