请分析以下这句SQL的意思,越详细越好,非常感谢。

SELECTo.*,IF(o.product_id>0,p.product_number,g.goods_number)ASstorage,o.goods_attr,IF... SELECT o.*, IF(o.product_id > 0, p.product_number, g.goods_number) AS storage, o.goods_attr, IFNULL(b.brand_name, '') AS brand_name, p.product_sn FROM `pzl_order_goods` AS o LEFT JOIN `pzl_products` AS p ON o.product_id = p.product_id LEFT JOIN `pzl_goods` AS g ON o.goods_id = g.goods_id LEFT JOIN `pzl_brand` AS b ON g.brand_id = b.brand_id WHERE o.order_id = '88'

另外, IF(o.product_id > 0, p.product_number, g.goods_number) ,if语句里面怎么有三段?都是啥意思?
这个SQL确定是可以运行的。执行后,会出现一条数据。
这是在 MYSQL 下执行的。
展开
 我来答
ghostaojp
2012-02-03
知道答主
回答量:2
采纳率:0%
帮助的人:3219
展开全部
以pzl_order_goods`表中order_id = '88'的记录为基准,关联符合条件的3个表(pzl_products,pzl_goods,pzl_brand)的记录,并且将按照下列条件显示查询结果:
1. 显示pzl_order_goods的所有字段
2. 名字为storage的字段。具体表示结果为:如果pzl_order_goods表的product_id > 0则显示为pzl_products表的product_number字段值,否则显示pzl_goods表的goods_number字段值。
3.pzl_order_goods的goods_attr字段
4.brand_name字段:如果pzl_brand的brand_name为NULL则显示空,否则显示brand_name原值。
5.pzl_products表的product_sn字段。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
美林数据技术股份有限公司
2020-10-29 广告
Tempo大数据分析平台,是一款面向企业用户的数据分析与应用工具,为用户提供报表设计、可视化分析、机器学习、文本分析等自助式数据分析与探索。平台基于大数据架构,集数据接入、数据分析探索、成果管理与应用为一体,面向企业全民用户提供从数据到业务... 点击进入详情页
本回答由美林数据技术股份有限公司提供
qthwcy
2012-02-03
知道答主
回答量:30
采纳率:0%
帮助的人:9.4万
展开全部
多表数据查询。
查找o.order_id=‘88’为条件的pzl_order_goods相关信息;通过LEFT JOIN(左连接)关联了pzl_products p、pzl_goods g、pzl_brand b等表,显示 p.product_number, g.goods_number、b.brand_name等信息。
IF(o.product_id > 0, p.product_number, g.goods_number) AS storage。if语句里面三段,第一段条件,第二、三段是赋值,此列列名为“ storage”,该列值,当o.product_id > 0时为 p.product_number,否则为g.goods_number。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Luoqianfeng
2012-02-03 · TA获得超过115个赞
知道小有建树答主
回答量:586
采纳率:0%
帮助的人:272万
展开全部
这sql你确定可以运行吗?
没见过这种写法IF(o.product_id > 0, p.product_number, g.goods_number)
不过意思应该跟三元运算符一样吧,如果o.product_id > 0,就取p.product_number,否则就取g.goods_number
还有IFNULL(b.brand_name, '') ,真是没见过这种写法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hxinshu321
2012-02-03 · 超过42用户采纳过TA的回答
知道小有建树答主
回答量:152
采纳率:100%
帮助的人:108万
展开全部
你这sql不是在sql server里面用的吧,是不是在access中或者其它数据库中用的?
追问
这是在 MYSQL 下执行的。
追答
if是一个三元运算符,第一个参数是布尔类型的表达式,当这个表达式的结果为真是取第二个参数的值,为假时取第三个参数的值,整条语句就是一个用left join左连接起来的语句,查询符合条件的数据
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
obsinia
2012-02-03 · TA获得超过355个赞
知道小有建树答主
回答量:655
采纳率:0%
帮助的人:349万
展开全部
这是哪个数据库引擎先说明一下吧
追问
这是在执行 mysql 的。
追答
就如LS某位所说,这是类似于三元运算符的一个函数,格式应该是 if(expression,true,false)。
第一个参数中为表达式,在你所举的这个例子中就是o.product_id > 0;
第二个参数所填的是当第一个参数中的表达式为真时,所返回的值。在你所举的例子中就是p.product_number;
第三个参数所填的是当第一个参数中的表达式为假时,所返回的值。也就是g.goods_number。
用语言来表述的意思就是:当o.product_id大于0时,结果集中的storage字段的值等于p.product_number;当o.product_id不大于0时,结果集中的storage字段的值就等于g.goods_number。
以上。
其实一楼二楼已经描述得很清楚了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式