【问题标题】:Retrieve records from two tables using MySQL JOINS使用 MySQL JOINS 从两个表中检索记录
【发布时间】:2018-11-13 18:09:41
【问题描述】:

我有两个表 tbl1 和 tbl2,其中数据如下所示,我想通过组合两个表来获取数据。

tbl1 数据:

SLNO    CALENDAR_RNO    PLNDHRS     STATUS_FLAG
30      64              0.78        0
30      54              0.78        1
30      55              0.78        2
30      70              0.29        0

tbl2 数据:

SLNO    CALENDAR_RNO    PLNDHRS
30      53              0.20
30      54              0.10
30      55              0.70
30      56              0.30
30      58              0.18
30      60              0.70
30      62              0.50
30      66              0.70
30      68              0.90

我想从 tbl2 中获取所有记录,并从 tbl1 中获取 STATUS_FLAG = 0 的记录。

我试过这个查询,但我不准确

SELECT SLNO,CALENDAR_RNO,PLNDHRS 
FROM tbl1 INNER JOIN tbl2 ON tbl1.SLNO = tbl2.SLNO 
WHERE tbl2.STATUS_FLAG = 0;`

但我需要如下表:

SLNO    CALENDAR_RNO    PLNDHRS
30      53              0.20
30      54              0.10
30      55              0.70
30      56              0.30
30      58              0.18
30      60              0.70
30      62              0.50
30      64              0.78
30      66              0.70
30      68              0.90
30      70              0.29

帮我解决这个问题。我是 MySQL 语言的初学者。

【问题讨论】:

    标签: mysql phpmyadmin mysql-workbench


    【解决方案1】:

    看来你只是想合并这两个表:

    SELECT SLNO, CALENDAR_RNO, PLNDHRS 
    FROM tbl1
    WHERE STATUS_FLAG = 0
    
    UNION
    
    SELECT SLNO, CALENDAR_RNO, PLNDHRS 
    FROM tbl2
    

    查询选择tbl2 的所有记录,并将它们与tbl1 的记录合并为STATUS_FLAG = 0。省略了重复项。

    Demo here

    【讨论】:

    • 是否可以使用MySQL JOINS,因为我想在上面的表格中添加另一个表格。
    • @TechMart 在其他一些 RDBMS 中,您可能会使用 FULL JOIN。在 MySQL 中,您必须在两个子查询中的每一个中使用 JOIN UNION
    猜你喜欢
    • 1970-01-01
    • 2014-12-14
    • 1970-01-01
    • 1970-01-01
    • 2010-10-04
    • 2015-01-26
    • 1970-01-01
    • 2010-09-19
    • 1970-01-01
    相关资源
    最近更新 更多