相关的子查询。 --- 不要使用逗号连接。 --- 如果使用联接,则不会获得该任务的积分。From 子句将仅引用一个表。--- 不要使用变量。
这是我的问题:对于书籍表中在书名中包含 Bird 的每本书,显示书籍 ID 和标题和关于我们是否有该书订单的消息。不要使用 Count() 函数。输出将遵循此格式,并按"订单状态"列排序,其中没有顺序的书籍优先;第二个排序键是书籍 ID。
这是使用 count() 函数和相关子查询的解决方案。我如何使用两者都不能解决此问题?请记住,我也不能使用联接。
SELECT book_id, title
, CASE (
SELECT count(*)
FROM a_bkorders.order_details OD
WHERE OD.book_id = BK.book_id
)
when 0 then 'no orders'
when 1 then 'Have orders'
when 2 then 'Have orders'
when 3 then 'Have orders'
else 'Have orders'
End as OrderStatus
From a_bkinfo.books BK
WHERE title Like '%Bird%'
ORDER BY OrderStatus, book_id;
),(IF (COUNT(BookId))>0,"No Order","Have Orders") AS 状态 来自 a_bkinfo.books BK其中标题如"%鸟%"按书 ID 分组按book_id订购
尝试以下查询:
SELECT book_id, title
, CASE when (SELECT count(*) FROM a_bkorders.order_details OD WHERE OD.book_id = BK.book_id) = 0
then 'no orders'
when (SELECT count(*) FROM a_bkorders.order_details OD WHERE OD.book_id = BK.book_id) = 1
then 'Have orders'
when (SELECT count(*) FROM a_bkorders.order_details OD WHERE OD.book_id = BK.book_id) = 2
then 'Have orders'
when (SELECT count(*) FROM a_bkorders.order_details OD WHERE OD.book_id = BK.book_id) = 3
then 'Have orders'
else 'Have orders'
End as OrderStatus
From a_bkinfo.books BK
WHERE title Like '%Bird%'
ORDER BY OrderStatus, book_id;