多列上的SQL连接删除重复项

时间:2018-03-02 17:08:08

标签: mysql sql

我已经尝试过寻找答案,但遗憾的是找不到答案。我对SQL很新。也许有人可以提供帮助?

我想加入3张桌子,查看图书标题列表以及他们所在类别的名称:

  1. 表1列出了书名和书籍ID
  2. 表2列出了图书ID和类别ID
  3. 表3列出了类别ID和类别名称
  4. 我设法使用join:

    执行此操作
    select backend.t1.title, backend.t3.category_name
    FROM backend.t1
    join backend.t2 on bms.t1.book_id = backend.t2.category_id 
    join backend.t3 on backend.t2.category_id = backend.t3.category_id;
    

    但是,结果中有重复的书名。如何删除重复的书名?类别名称可以重复,因为通常几个标题属于同一类别。我尝试的每个解决方案都清除了重复标题和类别名称的表格,因此它是一个非常短的列表!

    谢谢!希望这是有道理的。

1 个答案:

答案 0 :(得分:0)

SELECT backend.t1.title, backend.t3.category_name
FROM backend.t1
JOIN backend.t2 ON bms.t1.book_id = backend.t2.book_id 
JOIN backend.t3 ON backend.t2.category_id = backend.t3.category_id;

当您希望找到与每本书相关的类别时,您应该通过book_id加入从表2到表1的联接。

需要考虑的一些事项:包含从您的图书ID到类别ID的“链接”的表2很可能是多对一表格,因为每个book_id可以有多个类别。如果是这种情况,那么通过加入此表,您可以多次看到相同的书名,因为该书有多个类别。返回的数据将表示表1中的每本书以及它在表2中“链接”的所有类别。表3绝对是一对一表,因为在每个category_id中是唯一的并且只是查找到该类别的名称。

如果有意义,请告诉我。