Mysql 如何使用case表达式解决此子查询?

Mysql 如何使用case表达式解决此子查询?,mysql,subquery,case,case-expression,Mysql,Subquery,Case,Case Expression,***规则:-不要使用任何类型的联接,也不要使用相关子查询。-不要使用逗号联接。-如果使用联接,则该任务将得不到任何分数。From子句将只引用一个表。-不要使用变量 ***这是我的问题:对于图书表中图书标题中包含Bird的每一本书,显示图书ID和 标题和一条关于我们是否有订购该书的信息。不要使用计数功能。输出将遵循此格式,并通过OrderStatus列对没有订单的书籍进行排序;第二个排序键是图书id 下面是使用计数函数和相关子查询的解决方案。如何使用两者都不解决此问题?记住,我也不能使用连接 S

***规则:-不要使用任何类型的联接,也不要使用相关子查询。-不要使用逗号联接。-如果使用联接,则该任务将得不到任何分数。From子句将只引用一个表。-不要使用变量

***这是我的问题:对于图书表中图书标题中包含Bird的每一本书,显示图书ID和 标题和一条关于我们是否有订购该书的信息。不要使用计数功能。输出将遵循此格式,并通过OrderStatus列对没有订单的书籍进行排序;第二个排序键是图书id

下面是使用计数函数和相关子查询的解决方案。如何使用两者都不解决此问题?记住,我也不能使用连接

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;

选择BookId、Title、COUNTBookId,如果COUNTBookId>0,则无订单,从a_bkinfo.books BK将订单作为状态 其中标题为“%Bird%” 按BookId分组 按图书编号排序尝试以下查询:

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;

不确定这是否可行,因为没有联接或相关子查询,您只能访问一个表。您可以使用非相关子查询,但需要将其与books表联接。是否使用联接?这是什么?SM MySQL?