我有两个表 items 和 sale_invoice_items , items 有一个标志指示该项目是否过期, sale_invoice_items 有到期日期。 现在在执行 SELECT 以返回我正在做的发票时:
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
如果商品过期了,则返回字段中的过期日期,否则只写“-”
项目名称返回正常,但过期时间不是,而是返回一个字节数组。
我做错了什么?
最佳答案
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/