【问题标题】:SQL Query 2 rows and display only once that have same valueSQL查询2行并仅显示一次具有相同值
【发布时间】:2013-10-11 17:17:10
【问题描述】:

我有这两张表,BOOK 和 REVISION,有点像这样:

书 Book_ID |书名 | ======================= 1 |第一册| 2 |书 2| 3 |书 3| 4 |第四册| 修订 Rev_Book_ID |修改日期 | ============================ 1 | 2012 年 10 月 1 日 | 2 | 2012 年 10 月 3 日 | 2 | 2012 年 10 月 5 日 | 4 | 2012 年 10 月 6 日 |

当一本书被修改时,该书的 book_id 将被保存在修订表中。如果该书再次被修订,它将添加该书的另一行。在我的 SQL 查询中,结果是它显示了本书的 2 个修订版。

这是我的查询:

SELECT book.Book_ID, book.Book_Name, Revision.Rev_Book_ID  from Book INNER JOIN Revision ON book.Book_ID=Revision.Rev_Book_ID

还有关于修订结果(PHP 问题),如果书被修订两次,它将显示 2 个修订或 3 个修订,如果 3 个修订,我知道这是一个 if 和 else 但没有想想怎么做。

我的结果: 图书编号 |书名 |修订 | =============================================== 1 |书 1 | 1 修订 | 2 |书 2 | 2 修订 | 2 |书 2 | 2 修订 | 3 |书 3 |无修订 | 4 |第四册 | 1 修订 | 想要结果 图书编号 |书名 |修订 | =============================================== 1 |书 1 | 1 修订 | 2 |书 2 | 2 修订 | 3 |书 3 |无修订 | 4 |书 4 | 1 次修订 |

【问题讨论】:

    标签: php html mysql sql rows


    【解决方案1】:

    您可以按 book_id 分组并仅选择 == 到 MAX(Rev_Book_ID) 的这些 rev_book_id 一般来说,您希望对每本书的数据进行聚合。 这是 mysql 规范:http://dev.mysql.com/doc/refman/5.5/en/group-by-functions.html 它应该会给你很多想法

    【讨论】:

      【解决方案2】:

      对于每本书,您的修订数 (COUNT(Date_Modified)):

         SELECT Book_ID, Book_Name, COUNT(Date_Modified) AS "Revisions"
           FROM Book
      LEFT JOIN Revison
             ON Book_ID = Revision_Book_ID
       GROUP BY 1, 2
      

      【讨论】:

      • 感谢此查询有效。然而,这部分“COALESCE(MAX(Date_Modified), 'No Revision') AS “Revisions” 我想它会显示做了多少次修订但它没有显示出来。或者我对这个的理解是错误的。
      【解决方案3】:

      假设您只想删除重复项:

      SELECT book.Book_ID, book.Book_Name, Revision.Rev_Book_ID from Book 
      INNER JOIN Revision ON book.Book_ID=Revision.Rev_Book_ID GROUP BY book.Book_ID
      

      【讨论】:

      • 是 此查询有效。我真的很想摆脱那些重复。在php方面。在修订结果(这是一个 PHP 问题)上,我怎么能做到这一点,如果这本书被修订两次,它将显示 2 个修订或 3 个如果做了 3 个修订,我知道这是一个 if 和 else 但不知道如何做到这一点。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-09
      • 1970-01-01
      • 2021-10-25
      • 2013-10-11
      • 2016-12-19
      • 2016-05-21
      • 2020-12-03
      相关资源
      最近更新 更多