我有 2 个表:Member 和 Member_Card。 Member_Card 有一个列链接到 Member Id 列,因此 Member 与 Member_Card 具有一对多关系
我输出一个 JSON,例如:
{
"Name" : "Member Name",
"Cards": [
{ "Card_No" : "1234"},
{ "Card_No" : "4321"}
]
}
Member 和 Member_Card 都有 LastModifiedDate 列。
我的查询是这样的:
SELECT Name FROM Member
LEFT JOIN Member_Card
ON Member_Card.Member = Member.id
WHERE Member.LastModifiedDate >= sinceDate
OR Member_Card.LastModifiedDate >= sinceDate
此查询的问题是,它只会返回自sinceDate以来修改的卡/成员(member)(即,如果成员(member)有2张卡,并且其中一张在sinceDate之后被修改,则只会返回1张卡)。我想返回成员(member)及其所有卡,无论是卡还是成员(member)本身在sinceDate之后被修改。
我怎样才能这样查询?或者我需要运行 2 个查询吗?
最佳答案
SELECT member.*,c.* from member inner join (
SELECT distinct member.id as mid FROM Member
INNER JOIN Member_Card
ON Member_Card.Member = Member.id
and ( Member.LastModifiedDate >= sinceDate
OR Member_Card.LastModifiedDate >= sinceDate ) ) a on a.mid=member.id
inner join member_card c on c.member=a.mid
关于MySQL 连接表 WHERE 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18050272/