mysql - mysql需要的所有条件数据

标签 mysql sql database

我有三个表 abc,它们之间有共同的 id

Table a:-
id      name      value
 1        a         4
 2        v          6

Table b:-
id      abc
 2        54
 3        56

Table c:-
id       bcd
1         54
3         34

现在我想要的是 where 条件下的 id,数据来自所有表。

请告诉我该怎么做。

预期结果-

如果查询是

select * from a left join b on a.id=b.id left join c on a.id=c.id where b.id=3

id  name   value   bcd   abc
3    NULL  NULL    34    56

如果查询是

select * from a left join b on a.id=b.id left join c on a.id=c.id where a.id=1

id  name   value   bcd   abc
3    a      4       54    NULL

最佳答案

这种解决问题的方法怎么样? :)

SELECT 
    z.id,
    a.name,
    a.value,
    c.bcd,
    b.abc
FROM 
    (
        SELECT
            DISTINCT y.id id
        FROM
            (
                SELECT id FROM a
                    UNION ALL
                SELECT id FROM b
                    UNION ALL
                SELECT id FROM c
            ) y     
    ) z
    LEFT JOIN a ON z.id = a.id
    LEFT JOIN b ON z.id = b.id
    LEFT JOIN c ON z.id = c.id
where z.id = 3

sql fiddle

这样你只需要给查询一个数字而不关心它存在于哪些表中。

关于mysql - mysql需要的所有条件数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17850623/

相关文章:

MySql复制场景

mongodb - 查询 MongoDB 以获取数组中的多个 ObjectID

c# - 如何在 RavenDB 上查询子元素?

php - 显示具有特定登录 ID 的数据库中的数据

mysql - 在 MySQL 中根据特定条件选择 'next' 行

php - 处理大型(数千万行)数据集

java - jdbc ODBC 连接

mysql - 如何使用 SQL 使用 WHERE 获取所有行

sql - 如何在 BigQuery Standard SQL 中进行可重复采样?

带有明细表和事务的 MySQL 存储过程