我有两个表items和sale_invoice_items,items有一个标志指示该项是否过期,sale_invoice_items有过期日期。
现在,当执行选择返回我正在执行的发票时:
select items.name as f1, IF( items.expiry =TRUE, sale_invoice_items.expiry, '-') as f2
from sale_invoices, sale_invoice_items, items where sale_invoices.id = 3 and sale_invoice_items.invoice_id = sale_invoices.id and items.id = sale_invoice_items.item_id
因此,如果项目过期,则在字段中返回到期日期,否则,只需写“-”
项名称返回ok,但到期时间不是,而是返回一个字节数组。
我做错什么了?
最佳答案
select
....
, case when items.expiry = true then
sales_invoice_items.expiry
else
'-'
end as expiry
....
from
....
您需要确保
sales_invoice_items.expiry
和
'-'
是相同的,即字符。你可以在这里使用转换函数
http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format
为了达到这个目的。
如果希望返回日期,则需要确定“其他”情况的预期值:虚拟日期、空值。。。。?
关于mysql - 在MySQL中有条件地选择一个字段或静态字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16749324/