【问题标题】:What is the difference between union and join?union 和 join 和有什么不一样?
【发布时间】:2011-02-20 07:38:04
【问题描述】:

SQL关键字unionjoin有什么区别?

【问题讨论】:

标签: sql join union


【解决方案1】:

UNION 运算符用于组合两个或多个SELECT 语句的结果集。

JOIN 关键字在 SQL 语句中用于根据这些表中某些列之间的关系从两个或多个表中查询数据。

w3schools.com 上关于这两个主题的教程(链接到上面)更详细。

【讨论】:

【解决方案2】:

将连接视为水平,将联合视为垂直

【讨论】:

  • 你确定这是正确的吗?如此处所述:stackoverflow.com/a/905383/1170330union 一个接一个地组合结果(水平),而 join 并排(垂直)组合它们。
  • @user1170330 我的答案与另一个答案相匹配。我认为你的方向很混乱。
  • UNION 将查询中的行一个接一个地放置,而 JOIN 生成笛卡尔积并将其子集——完全不同的操作。就像@EvgenijReznik 提到的 SO 链接一样。
【解决方案3】:

联合是来自多个集合的元素的组合。

Join 是多个集合的叉积的子集

【讨论】:

    【解决方案4】:

    如果需要组合多个查询使用联合运算符,该运算符执行第一个查询和第二个查询,然后将所有结果返回一个数据集see more

    select field from t1
    union 
    select field from t2
    

    如果需要创建查询从两个或多个表中选择数据,则使用运算符连接see more

    select t1.field, t2.field
    from t1.number inner join t2.key on t1.number=t2.key
    

    【讨论】:

      【解决方案5】:

      联合:

      1. UNION 中,您需要注意SELECT 语句中使用的列长度、数据类型和列数在两个表中应该相同
      2. 结果与第一个表列名称一起显示为两个表中的数据的组合,通过消除重复项
      3. 要使用UNION,您至少应该有两个SELECT 语句

      加入:

      1. JOINs 中不需要有第 1 点中提到的规则。
      2. 根据使用的JOIN 的类型(外、内、笛卡尔..),查询中提到的所有列都会显示结果
      3. 一个SELECT 声明就足够了

      希望这对你有帮助..

      【讨论】:

        猜你喜欢
        • 2010-10-28
        • 2016-09-05
        • 1970-01-01
        相关资源
        最近更新 更多