SQL

110 阅读1分钟

相关知识

left join、right join和inner join的区别

  • left join(左连接):左连接返回左表中的所有记录,以及右表中与左表匹配的记录。如果右表中没有与左表匹配的记录,则返回NULL值。左连接以左表为基准,将右表中符合条件的记录与左表进行关联。
  • right join(右连接):右连接返回右表中的所有记录,以及左表中与右表匹配的记录。如果左表中没有与右表匹配的记录,则返回NULL值。右连接以右表为基准,将左表中符合条件的记录与右表进行关联。
  • inner join(内连接):内连接返回左表和右表中满足连接条件的记录。只有在左表和右表中都存在匹配的记录时,才会返回结果。内连接以两个表的交集为基准,将满足条件的记录进行关联。

具体用法

# 合并数据
- UNION # 合并多个查询结果,并自动去重,只保留不重复的行
- UNION ALL # 合并多个查询结果,不去重,所有结果全部保留

# IF语句,如果条件为真,则取真值,否则取假值。
- IF(条件, 真值, 假值)
- IF(pickey rlike 'http', pickey, CONCAT('http://p0.meituan.net/ugcpic/', pickey)) AS pic_url

# 窗口函数 ROW_NUMBER()
- ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY order_date DESC) AS rn # 用于给结果集中的每一行按分组和排序规则编号

# GROUP BY 按照字段分组,分组后每组只保留一条聚合结果,相当于对分组字段去重。
- GROUP BY column_name

# HAVING 子句可以筛选分组后的各组数据。
- HAVING condition