zoukankan      html  css  js  c++  java
  • 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 })

    推荐网址:https://blog.csdn.net/weixin_41761540/article/details/80729617

  • 相关阅读:
    bzoj1607: [Usaco2008 Dec]Patting Heads 轻拍牛头
    bzoj1016: [JSOI2008]最小生成树计数
    bzoj1051: [HAOI2006]受欢迎的牛
    bzoj1003: [ZJOI2006]物流运输
    bzoj1079: [SCOI2008]着色方案
    bzoj1179: [Apio2009]Atm
    bzoj1877: [SDOI2009]晨跑
    bzoj1821: [JSOI2010]Group 部落划分 Group
    bzoj1305: [CQOI2009]dance跳舞
    bzoj1858: [Scoi2010]序列操作
  • 原文地址:https://www.cnblogs.com/zhaomeizi/p/9929091.html
Copyright © 2011-2022 走看看