MySQL 连接表 WHERE 子句

标签 mysql sql join

我有 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/

相关文章:

mysql - 为什么在正确的方法之后读取并不能产生一致的结果?

mysql - 参数化表名

sql - 将日期透视为行

mysql - 我如何构建这个 JOIN 语句?遇到条件困难

javascript - 使用 jQuery 和 PHP 从 MySQL 数据库查询的 JSON 数据填充 HTML 选择字段

php - 如何在 php 和 mysql 中的 2 个数据库和不同主机之间进行同步

PHP/SQL 从数据库中选择 id 列表并在查询中使用它

c# - Entity Framework : Skip few columns or select as null from related entities

c++ - 迭代并连接 char 数组

R:合并两个数据帧而不相乘行