SQL 查询 2 行,并且仅显示一次具有相同值的行


SQL Query 2 rows and display only once that have same value

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

书Book_ID | Book_Name |======================1 |     第一册|2 |     规格书2|3 |     第三册|4 |     第四册|
校订Rev_Book_ID | Date_Modified |===========================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 |    第 4 册 |1 修订版 |
想要结果预订编号 | 书名 |修订 |==============================================1 |    规格书 1 |1 修订版 |2 |    第 2 册 |2 修订 |3 |    第 3 册 |无修订 |4 |    第 4 册 |1 修订版 |

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

假设你只想摆脱重复项:

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

对于每本书,您修订的次数(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