复杂查询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
分类:技术博客
标签: 其他
作者:五行缺土
微信扫码接收最新分享: