回答

收藏

使用WHERE子句的MySQL LEFT JOIN查询

技术问答 技术问答 254 人阅读 | 0 人回复 | 2023-09-12

我希望有人能帮助我,因为我很难理解如何正确查询
( C! P, |5 `* @我有成员表和成员表Member_Card表。Member_Card有一个成员列,所以卡与成员有关。两都有一个LastModifiedDate列。会员可以没有一张,一张或几张卡。
$ s# ]& {' g8 h$ M( z, ^! S/ S- |我需要回去LastModifiedDate> = sinceDate(给定日期)或其卡(如有)LastModifiedDate> =sinceDate所有成员。
0 ?# S  p! d; J* \想象一下,因为日期是2013年1月1日00:00:00。我想输出这样的东西:9 d7 _5 r. W" y# G
[{    "Id": "001O000000FsAs7IAF",   "LastModifiedDate": 2013-01-    "Member_Card": null},{    "Id": "001O000000FrpIXIAZ",   "LastModifiedDate": 2012-12-    "Member_Card": [{        "Id": "a00O0000002w8FGIAY",       "Member": "001O000000FhDSoIAN",       "LastModifiedDate": 2013-01-        "Id": "a00O0000002uYMtIAM",       "Member": "001O000000FhDSoIAN",       "LastModifiedDate": 2012-12-12 00:00:00   }{    "Id": "001O000000FsAg7IAF",   "LastModifiedDate": 2013-01-    "Member_Card": [{{                       "Id": "a00O0000002w8FFIAY",       "Member": "001O000000FhDSoIAN",       "LastModifiedDate": 2012-12-   }1st匹配LastModifiedDate而且没有卡的成员。第二名不匹配LastModifiedDate成员,但他有两张相关卡,其中一张是匹配的LastModifiedDate。三是与卡匹配LastModifiedDate的成员。3 m, }* E% V* D" e: W& p  j4 O
感谢SO,我得到了以下查询:5 T. r7 ]# n$ f' H/ F2 S
SELECT member.*,card.* 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.idinner join member_card card on card.member=a.mid效果很好,但没有会员卡。
1 P' A  c0 V3 k1 R5 R, p4 ?我试着做点什么INNER JOIN更改为LEFT JOIN,但随后忽略了日期比较:-(
- t+ D. k8 Z5 Y! H你能帮我这个吗?
3 e4 p% F# s8 I5 S7 b* D8 ?                                                               
6 ^$ h- i6 S' t" @  k    解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则