一个SQL语句

2016-07-07 15:01 来源:www.chinab4c.com 作者:ecshop专家

在购买记录查询里面有这么一条SQL语句看不懂,麻烦高手解释一下。
  1. SELECT u.user_name, og.goods_number, oi.add_time, IF(oi.order_status IN (2, 3, 4), 0, 1)
复制代码
这个里面的IF(oi.order_status IN (2, 3, 4), 0, 1)判断是什么意思?oi.order_status应该是order_info表里面的order_status字段吧,而后面的IN加一串数字是什么意思呢?

回答:
就是状态是否在 括号里的数字里。搜索一下 mysqlin的用法就行

我的理解应该是这样的
数据库中order_status字段值为2 3 4的时查询结果中的 order_status 为0 否则order_status为1

问题是我看了数据库里面的order_status,已经发送的订单,status数值是5,我看前台显示,发送出去的订单是记录在购买记录里的,为什么那条括号里有2,3,4而没有5呢?

是我一时糊涂了,3楼的是正解,是ECSHOP简单地把购买记录里面的订单区分为两种状态,异常的情况就显示“取消”,而待确认或者已经确认或者发货了的都显示Turnover(英文模板),这个词是否用得正确我不好说,但是我个人觉得改成Valid可能比较合适,无论是待确认还是已经发货的订单,起码都是“有效的”订单。当然,好像订单要出现在购买记录上面还有一个时间的限制,具体是多久后才会显示我就没有细究了。