我正在获取所有类别并使用具有帖子类别的item_category加入类别表。 我的sql就是那样
SELECT category.*,IF(item_category.category_id=NULL, 0,1) is_selected
FROM category
LEFT JOIN item_category ON category.category_id=item_category.category_id AND item_id=1
我尝试了但是它没有用。因为使用时出现python throw错误
Category.select(Category, ItemCategory, fn.if(ItemCategory.category_id==None, 0, 1) )
if语句的正确用法是什么? 感谢。
答案 0 :(得分:1)
我找到了解决方案,但我不知道这是最好的方法。 我改变了' fn.if'到' fn.IF'它工作了
Category.select(Category, ItemCategory, fn.IF(ItemCategory.category_id==None, 0, 1) )
答案 1 :(得分:0)
使用Case
函数来获取所需的输出,例如IF
/ ELSE
(在peewee官方代码源https://github.com/coleifer/peewee/blob/853d57005d0dbc49a0ff24560531c637ceeb4f25/peewee.py#L1732之后)
from peewee import Case
Category.select(
Category,
ItemCategory,
Case(None, [((ItemCategory.category_id==None), 0)], 1)
)
此处,Case
的参数为-
predicate
的默认值为CASE
expression_tuples
,其中包含条件(ItemCategory.category_id==None)
和条件传递的值0
1
)