复杂查询SQL实例涉及视图 | 连接 | 函数 | 固定列
目录
1、left join 右表的部分数据
2、CONCAT()拼接列与列或者列与字符串
3、RIGHT()和LEFT()函数截取列内容
4、增加一个固定值的列
5、复杂真实案例
1、left join 右表的部分数据
右表需要全量数据时,left join后直接跟表名即可,右表只需要部分数据时,可以用带有where的select语句代替表名,并重命名即可。
select xxx from xxx left join (select xxx from where) as yyy on yy.id=xxx.id
2、CONCAT()拼接列与列或者列与字符串
语法
CONCAT(表达式1, 表达式2, 表达式3,...)
参数值
参数 | 描述 |
---|---|
表达式1,表达式2,表达式3,等等 | 必需。要加在一起的表达式。 |
示例
3、RIGHT()和LEFT()函数截取列内容
从字符串中提取 4 个字符(从右/左侧开始)
语法
RIGHT(string, number_of_chars)
参数值
参数 | 描述 |
---|---|
string | 必需。要从中提取的字符串 |
number_of_chars | 必需。要提取的字符数。如果此参数大于string 中的字符数,此函数将返回string |
示例
4、增加一个固定值的列
增加一列yyy,并且全部赋值为xxx,示例:
select ‘xxx’ as ‘yyy’
5、复杂真实案例
CREATE OR REPLACE VIEW `guobu`.`正向交易` AS /*创建或者覆盖视图*/
SELECT
g.订单id AS '*订单号',
a.活动预算授权码 AS '*活动预算授权码',
CONCAT("3BSA", RIGHT(g.支付id, 26)) AS '*支付/退款id',
/*从右侧截取支付id26个字符串,并且在前方拼接3BSA*/
'消费' AS '*交易类型',
/*消费作为交易类型列的固定值*/
'' AS '*原支付id',
/*空作为交易类型列的固定值*/
i.商品编码 AS '*商品条码',
g.品牌名称 AS '*商品品牌',
g.商品型号 AS '*商品型号',
'台' AS '*单位',
a.营销活动号 AS '*营销活动号',
'' AS '加密手机号',
'' AS '加密证件号码',
'' AS '真实姓名',
i.SN AS 'S/N码',
i.IMEI1码,
i.IMEI2码,
i.物流单号,
n.数电发票号码 AS '*发票号',
'' AS '类型(台式、笔记本)'
FROM
guobu.gborder AS g
/*筛选部分右表数据来进行左连接*/
LEFT JOIN (
SELECT
*
FROM
guobu.activitycode
WHERE
时间 = '2月22日-至今'
) AS a ON g.子标签名称 = a.子标签名称
LEFT JOIN guobu.information AS i ON g.子订单id = i.子订单号
LEFT JOIN guobu.inovice AS n ON g.子订单id = n.子订单号
WHERE
g.订单支付日期 >= '2025-05-01';
发布时间:2025年8月30日 13:52
分类:技术博客
标签:
其他
作者:五行缺土
微信扫码接收最新分享:
