***规则:---不要使用任何类型的连接,也不要使用相关子查询。 ---不要使用逗号连接。 ---如果你使用联接,那么你将无法获得该任务的积分。 From子句仅引用一个表。 ---不要使用变量。
***这是我的问题:对于书籍表格中包含书籍标题中的鸟类的每本书,显示书籍ID和 标题和关于我们是否有任何订单的消息。不要使用Count()函数。输出将遵循这种格式,并由OrderStatus列排序,书籍首先没有订单;第二个排序键是书籍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;
答案 0 :(得分:0)
SELECT BookId,Title,COUNT(BookId),(IF(COUNT(BookId))> 0,“No Order”,“Have Orders”)AS状态来自a_bkinfo.books BK 标题喜欢'%Bird%' GROUP BY BookId 订购by book_id
答案 1 :(得分:0)
尝试此查询:
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;