在MySQL中有条件地选择字段或静态字符串
我有两个表项目和销售发票项目,项目有一个标志指示项目是否过期,销售发票项目有过期日期。 现在,在执行选择以返回我正在执行的发票时:在MySQL中有条件地选择字段或静态字符串,mysql,select,conditional,Mysql,Select,Conditional,我有两个表项目和销售发票项目,项目有一个标志指示项目是否过期,销售发票项目有过期日期。 现在,在执行选择以返回我正在执行的发票时: 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
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,但过期日期为not,它返回的是字节数组
我做错了什么
select
....
, case when items.expiry = true then
sales_invoice_items.expiry
else
'-'
end as expiry
....
from
....
您需要确保
sales_invoice_items.expiry
及
是相同的,即字符。您可以在此处使用转换函数
为了实现这一点
如果希望返回日期,则需要确定“其他”情况下的期望值:伪日期、空值……?谢谢,两种情况下的格式都必须匹配,这是我的错误,因为到期日是日期时间格式,而“-”是字符串。用日期格式(sale\u invoice\u items.expiration,“%d-%m-%y”)替换sale\u invoice\u items.expiration成功了
'-'