sql与2个表的多对多关系

时间:2016-03-31 15:47:09

标签: mysql sql sql-server database ms-access

所以我需要为客户端加入两个表。这些表只共享1个字段(COLOR,它不是唯一的密钥标识)。是否可以加入/关联这两个表?

所以让我们说理论上我有两个带COLOR和COLOR ATTRIBUTE的表,如下所示:

+-------+----------+
| COLOR |   NAME   |
+-------+----------+
| red   | brian    |
| red   | ben      |
| red   | tom      |
| red   | jennifer |
| blue  | tom      |
| blue  | billy    |
| blue  | michelle |
+-------+----------+  

另一个表只与颜色列相关,但有多个颜色权重:

+-------+--------+
| COLOR | WEIGHT |
+-------+--------+
| red   |     12 |
| red   |      3 |
| red   |     11 |
| blue  |      4 |
| blue  |     23 |
| blue  |      7 |
| blue  |      5 |
| blue  |     10 |
+-------+--------+  

那么我怎样才能加入这两个表,只有颜色列是共享的?结果会是什么样的?提前谢谢!

1 个答案:

答案 0 :(得分:1)

虽然 color 不是唯一标识符,但如果您打算对其执行联接,则会将其视为此类。

SELECT * FROM Table1 t1
LEFT JOIN Table2 t2
ON t1.COLOR = t2.COLOR
ORDER BY COLOR DESC;

这将输出三列,其中12个“红色行”和15个“蓝色行”。