繁体   English   中英

MySQL连接表的WHERE子句

[英]MySQL joining tables WHERE clause

我有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以来修改过的Card / Member(即,如果某个成员有2张卡,而afterDateDate对其进行了修改,则只会返回1张卡)。 我想归还该成员及其所有卡片,无论是在afterDate之后修改了卡片还是成员本身。

我怎么能这样查询? 还是我需要运行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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM