【问题标题】:SELECT DATA IN TWO TABLES在两个表中选择数据
【发布时间】:2016-03-19 14:17:13
【问题描述】:

表1:

+-----------+----------+------------+
| FirstName | LastName | Qty        |
+-----------+----------+------------+
| Tia       | Carrera  | 10         |
| Nikki     | Taylor   | 20         |
| Yamila    | Diaz     | 30         |
+-----------+----------+------------+

表2:

+-----------+----------+------------+
| FirstName | LastName | Qty        |
+-----------+----------+------------+
| Tia       | Carrera  |  5         |
| Nikki     | Taylor   |  8         |
+-----------+----------+------------+

表中行的示例输出

+-----------+----------+------------+
| FirstName | LastName | Qty        |
+-----------+----------+------------+
| Tia       | Carrera  | 5          |
| Nikki     | Taylor   | 8          |
| Yamila    | Diaz     | 30         |
+-----------+----------+------------+

【问题讨论】:

标签: mysql sql


【解决方案1】:

您应该使用不同于 FirstName 和 LastName 的列创建新列并定义 PK 和 FK。但是对于当前的结构,您可以使用LEFT JOINCOALESCE

SELECT t1.FirstName, t1.LastName, COALESCE(t2.Qty, t1.Qty) AS Qty
FROM table1 t1
LEFT JOIN table2 t2
  ON t1.FirstName = t2.FirstName
 AND t1.LastName = t2.LastName;

SqlFiddleDemo

输出:

╔════════════╦═══════════╦═════╗
║ FirstName  ║ LastName  ║ Qty ║
╠════════════╬═══════════╬═════╣
║ Nikki      ║ Taylor    ║   8 ║
║ Tia        ║ Carrera   ║   5 ║
║ Yamila     ║ Diaz      ║  30 ║
╚════════════╩═══════════╩═════╝

【讨论】:

    【解决方案2】:

    可能会有所帮助

    SELECT * FROM Table2
    UNION ALL
    SELECT * FROM Table1
        WHERE FirstName NOT IN(SELECT FirstName FROM Table2) AND 
              LastName  NOT IN(SELECT LastName FROM Table2)
    

    【讨论】:

      猜你喜欢
      • 2011-09-06
      • 1970-01-01
      • 2012-07-31
      • 2012-11-18
      • 2012-12-16
      • 2012-09-13
      • 1970-01-01
      • 2013-02-13
      • 2011-07-08
      相关资源
      最近更新 更多