mysql join union_MySql语句中Union和join的用法

Union

UNION 操作符用于合并两个或多个 SELECT 语句的结果集。

请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。

默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。

另外,UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。

JOIN

有时为了得到完整的结果,我们需要从两个或更多的表中获取结果。我们就需要执行 join。

数据库中的表可通过键将彼此联系起来。主键(Primary Key)是一个列,在这个列中的每一行的值都是唯一的。在表中,每个主键的值都是唯一的。这样做的目的是在不重复每个表中的所有数据的情况下,把表间的数据交叉捆绑在一起。

JOIN: 如果表中有至少一个匹配,则返回行(INNER JOIN 与 JOIN)

LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行

RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行

FULL JOIN: 只要其中一个表中存在匹配,就返回行

栗子:

let { limit, offset } =_4page(params)

let whereString=``for (let item of ['xxx1', 'xxx2', 'xxx3', 'xxx4', 'xxx5']) {if(params[item]) {if (whereString ==``) {

whereString+= item + ` like '%` + params[item] + `%'`

}else{

whereString+= `and ` + item + ` like '%` + params[item] + `%'`

}

}

}

let sqlString= `select A.xxx1, A.xxx2, A.xxx3, A.yyy, B.id, B.cid, B.xxx4, B.xxx5, B.zzz, B.ctime from ( select * from 表1)A JOIN (select * from 表2)B on A.id = B.cid`

let pageSqlString = `select * from (` + sqlString +`)data order by ctime desc limit :offset, :limit`

let allSqlString= `select count(*) count from (` + sqlString +`)data order by ctime desc`if(whereString) { pageSqlString= `select * from (` + sqlString + `)data where ` + whereString +` order by ctime desc limit :offset, :limit`

allSqlString= `select count(*) count from (` + sqlString + `)data where ` + whereString +` order by ctime desc` }

let replacements={ limit: limit, offset: offset } let allResult=await conn.query(allSqlString, { type: conn.QueryTypes.SELECT })

let pageResult=await conn.query(pageSqlString, { replacements: replacements, type: conn.QueryTypes.SELECT })

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值