[英]mysql select unique records
I've got the following query: 我有以下查询:
select * from members,subscriptions
where members.MemberID = subscriptions.MemberID
and subscriptions.Year = 2009
and members.ASSCID = 15
and subscriptions.Untildate between '$2009-01-01' and '2009-12-31'
order by members.Memberlastname
Members pay either their annual subscription once (annual subscription) or they pay 2 times, one in january and one in june (six month subscriptions). 会员支付其年度订阅一次(年度订阅)或支付2次,一次在1月,一次在六月(六个月订阅)。 What i want is to pull the members who paid at least once.
我想要的是拉动至少付过一次的会员。
The statement above will bring some members twice (those who paid both on january and june). 上述声明将使一些成员两次(那些在1月和6月同时付款的人)。
Is is possible to pull the members who paid at least once (no matter if they paid an annual or a six month subscription). 是否可以拉动至少支付一次的会员(无论他们是每年还是六个月的订阅)。 Avoiding duplicates.
避免重复。
使用SELECT DISTINCT,它将只获取您选择的列的唯一值。
You can do an exists on subscriptions to find the members who have paid at least once for a given year: 您可以在订阅上执行存在以查找在给定年份至少支付一次的成员:
select * from members
where members.ASSCID = 15 and
exists (select 1 from subscriptions
where members.MemberID = subscriptions.MemberID
and subscriptions.Year = 2009
)
order by members.Memberlastname
All records from members table where each member has at least one subscription: 来自成员表的所有记录,其中每个成员至少有一个订阅:
select members.*
from members join
(
select
members.MemberID, count(*)
from members join subscriptions on (members.MemberID = subscriptions.MemberID)
where subscriptions.Year = 2009
and subscriptions.Untildate between '2009-01-01' and '2009-12-31'
group by members.MemberID
having count(*) >= 1
)
v on ( members.MemberID = v.MemberID)
where members.ASSCID = 15
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.