我有两个结果集A和B
表A看起来像这样
+------+---------+------------+
| a_id | item no | total sold |
+------+---------+------------+
| 1 | 101 | 23 |
| 2 | 102 | 34 |
| 4 | 405 | 54 |
| 5 | 506 | 65 |
| 6 | 104 | 23 |
+------+---------+------------+
表B看起来像这样
+------+---------+----------+
| b_id | item no | location |
+------+---------+----------+
| 1 | 101 | A1 |
| 2 | 102 | A2 |
| 3 | 103 | A3 |
| 4 | 104 | A4 |
+------+---------+----------+
我想实现如下输出
+------+---------+------------+----------+
| a_id | item no | total sold | location |
+------+---------+------------+----------+
| 1 | 101 | 23 | A1 |
| 2 | 102 | 34 | A2 |
| 4 | 405 | 54 | NULL |
| 5 | 506 | 65 | NULL |
| 6 | 104 | 23 | A4 |
+------+---------+------------+----------+
我想将“LOCATION”列附加到表A并显示表B中存在的每个项目的位置值。如果表A中的ITEM NO没有位置值,则LOCATION值具有为NULL(即EMPTY)。
由于我是初学者,我不知道如何实现它。我尝试使用UNION,但我没有写出正确的查询
答案 0 :(得分:1)
您正在寻找的是加入。特别是左外连接,因此您可以从左表(TableA)获得所有结果,并且只获得右表(TableB)中匹配的结果。
指定连接时,使用ON
子句告诉DB哪些字段在表之间相关:
SELECT
a_id,
a.itemno,
a.totalsold,
b.location
FROM
tableA
LEFT OUTER JOIN tableB ON
tableA.itemno = tableB.itemno
答案 1 :(得分:1)
你应该使用SELECT a.a_id, a.itemno, a.totalsold, b.location
FROM tableA AS a LEFT JOIN tableB AS b ON
a.itemno = b.itemno
(左边因为你想在第二张表中找不到记录时得到空值)
error