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