MySQL查询中的IF语句
我需要帮助。我有一个疑问:MySQL查询中的IF语句,mysql,if-statement,Mysql,If Statement,我需要帮助。我有一个疑问: SELECT IF(book_id=2, 'NTR', if(book_id=5,'CBC', if(book_id=1,'CBC','Repair')) AS 'STATUS', COUNT(IF(book_id=2, 'NTR', if(book_id=5,'CBC', if(book_id=1,'CBC','Repair'))) AS 'TOTAL' FROM book_entry AS b WHERE last_updated=(SELECT last
SELECT IF(book_id=2, 'NTR', if(book_id=5,'CBC', if(book_id=1,'CBC','Repair')) AS
'STATUS',
COUNT(IF(book_id=2, 'NTR', if(book_id=5,'CBC', if(book_id=1,'CBC','Repair'))) AS
'TOTAL'
FROM book_entry AS b
WHERE last_updated=(SELECT last_updated FROM book_entry WHERE book_code=b.book_code ORDER
BY last_updated DESC) AND (SELECT description FROM book_categori AS c, book_item AS i
WHERE c.id=i.id AND i_item_code=b.item_code) = "NOVEL"
GROUP BY IF(book_id=2, 'NTR', if(book_id=5,'CBC', if(book_id=1,'CBC','Repair')))
此表的总数据为128。实际上,有3种以上的状态,但我只想得到3种状态(NTR、CBC和其他状态,我将其分组为1种状态,我将其设置为“修复”)。根据我在上面创建的查询,我得到了以下结果:
STATUS TOTAL
---------------
CBC 70
Repair 58
这不是我想要的结果。我想要的是这样的:
STATUS TOTAL
-----------------
CBC 70
Repair 58
NTR 0
实际上,“NTR”没有id,这意味着id=2实际上是空的,但我想在上面的结果中包含它
有人能告诉我需要在查询中更改什么才能得到结果吗?看起来您需要一个状态表,其中包含status\u id int、status varchar等字段 添加CBC、NTR和维修记录 然后在book_条目中添加status_id列,并根据需要进行更新 然后您的查询可以连接到状态表-类似于:
select status.status, count(*) total
from status left join book_entry
on status.status_id = book_entry.status_id
join book_categori
on book_entry.item_code = book_categori.i_item_code
where book_categori.description = 'NOVEL'
group by status.status
(无法理解您试图对where子句的第一部分做什么
last_updated=(SELECT last_updated FROM book_entry WHERE book_code=b.book_code
ORDER BY last_updated DESC)
我认为除了使查询更难阅读之外,它不会有任何影响。如果您根据图书条目进行查询,则无法显示“NTR 0”因为不存在任何具有该id的条目。请创建一个关于您的类别的键入表,在其中存储类别名称:CBC、Repair、NTR等。感谢您的帮助,但我已经找到了解决此问题的其他解决方案。我更改了查询,其中我没有使用IF语句来获得结果,但我使用UNION来组合我想要的所有数据d幸运的是它起作用了。呵呵。。