gpt4 book ai didi

mysql - 如何使用 SQL 查询连接表并获取绑定(bind)列的数量?

转载 作者:行者123 更新时间:2023-11-29 07:27:48 25 4
gpt4 key购买 nike

我在数据库中有BookTable(带有外部嘿LibID):

| BookID | BookName | BookPrice |  LibID  |
-------------------------------------------
| 1 | Book_1 | 200 | 1 |
| 2 | Book_2 | 100 | 1 |
| 3 | Book_3 | 300 | 2 |
| 4 | Book_4 | 150 | 4 |

还有LibraryTable:

| LibID  | LibName  | LibLocation |
-----------------------------------
| 1 | Lib_1 | Loc_1 |
| 2 | Lib_2 | Loc_2 |
| 3 | Lib_3 | Loc_3 |
| 4 | Lib_4 | Loc_4 |

我需要编写 SQL 查询,该查询将返回有关图书馆的信息以及该图书馆的图书数量:

| LibID  | LibName  | NumberOfBooks|
------------------------------------
| 1 | Lib_1 | 2 |
| 2 | Lib_2 | 1 |
| 3 | Lib_3 | 0 |
| 4 | Lib_4 | 1 |

它应该是一个 SQL 查询,可能带有嵌套查询或联接。不确定查询应该是什么样子:

SELECT L.LibID AS LibID, L.LibName AS LibName, COUNT(B) AS NumberOfBooks
FROM LibraryTable L, BookTable B
WHERE L.LibID = B.LibID

这行得通吗?

最佳答案

不,此查询将不起作用。 COUNT 聚合数据,因此您必须明确告诉 DBMS 您想要对哪组数据进行计数。在您的情况下,这是库(您需要每个库一个结果记录)。

COUNT 的参数是列,而不是表,因此将其更改为 *(即计数记录)或某个列(例如 LibID)。

您使用的连接语法有效,但已弃用。请改用显式联接。在您的情况下,如果可能的话,外部联接甚至会显示根本没有书籍的图书馆。

select l.libid, l.libname, count(b.libid) as numberofbooks
from librarytable l
left outer join booktable b on b.libid = l.libid
group by l.libid;

您也可以在没有连接的情况下完成所有这些操作,并在子查询中获取图书计数。那么你就不必聚合了。在我看来,这更简单、更具可读性。

select 
l.libid,
l.libname,
(select count(*) booktable b where b.libid = l.libid) as numberofbooks
from librarytable l;

关于mysql - 如何使用 SQL 查询连接表并获取绑定(bind)列的数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33941267/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com