如何进行SELECT 1 FROM

时间:2017-03-31 00:30:26

标签: mysql

这是我的查询

这是另一次尝试:

有没有选择MAX,无论如何我可以获得Book详细信息???

我尝试过更改为预订。*但是它出错了。请有人告诉我如何去做,我可以检索图书信息吗?

我要做的是从一张桌子获取最高金额并获取与之相关的记录

提前致谢

2 个答案:

答案 0 :(得分:1)

在不了解您的架构的情况下,我可以提供帮助(基于您当前的查询):

SELECT bk.*, a.maxDonations
  FROM Book bk
        INNER JOIN (SELECT b.bookID, MAX(lre.donationsCollected) as maxDonations
                      FROM Book b
                            INNER JOIN MemberBorrowsBook mbb
                                    ON b.bookID = mbb.bookID
                            INNER JOIN LibraryRepairEvent lre 
                                    ON mbb.memberID = lre.organiserID
                     GROUP BY b.bookID
                    ) a
               ON bk.bookID = a.bookID

答案 1 :(得分:0)

这会给您一个错误,因为您尝试从查询中返回每一行,并试图为您提供汇总结果。

“max”操作是一个聚合函数,这意味着它“给我一大堆行,我会给你一个结果。”

虽然只说“select *”不是一个聚合操作,但它只是说“给我一个我选择的每一行的结果”

解决问题并获取max(donationsCollected)行的所有详细信息的最简单方法是执行以下选择:

select * from LibraryRepairEvent where donationsCollected =
SELECT MAX(LibraryRepairEvent.donationsCollected)
FROM LibraryRepairEvent
WHERE EXISTS (
    SELECT 1 FROM MemberBorrowsBook
    JOIN Book ON Book.bookID = MemberBorrowsBook.bookID
    WHERE LibraryRepairEvent.organiserID = MemberBorrowsBook.memberID
)

我不记得你是否需要说“donationsCollected =”或“捐赠收集的地方”,所以给他们两个尝试