【问题标题】:Distinct value from multiple tables with UNION使用 UNION 来自多个表的不同值
【发布时间】:2013-12-13 12:17:05
【问题描述】:

所以我有这个 mysql 语句,我想只获取一次 id 的值。这是我尝试过的,但它仍然多次写入 ID。

SELECT table1.id, table3.location FROM table1, table3

UNION

SELECT table2.id, table3.location FROM table2, table3

GROUP BY id

举例:

1 - swe
1 - swe
2 - uk
2 - uk
etc

我想要:

1 - swe
2 - uk

有什么建议吗?非常感谢任何帮助!谢谢

【问题讨论】:

  • 你确定这只是你 sql 上的值吗?因为除非你使用 UNION ALL,否则 UNION 已经做了不同的事情
  • GROUP BY id, location 会有所帮助
  • 没有聚合功能,所以根本不需要group by。
  • 为什么要与其他表交叉连接?
  • 嗯,我有更多的表 1 和 2 的值。它们在两个表中是相同的列。不,我使用 UNION :) @JorgeCampos

标签: mysql sql group-by distinct union


【解决方案1】:

离开小组:

SELECT table1.id, table3.location FROM table1, table3
UNION
SELECT table2.id, table3.location FROM table2, table3

正如 W3C 所指出的,UNION 在默认情况下已经只显示了独特的值: http://www.w3schools.com/sql/sql_union.asp

【讨论】:

    【解决方案2】:

    您无需添加 group by 子句,因为 UNION 已经区分了您的 2 个结果集。

    SELECT table1.id, table3.location FROM table1, table3
    UNION
    SELECT table2.id, table3.location FROM table2, table3
    

    SQL Fiddle Demo

    【讨论】:

    • 与我的答案相同,除了小提琴演示。 :P +1 小提琴,你。
    【解决方案3】:

    SELECT t1.id, t3.location FROM table1 t1 内连接 table3 t3 on (t1.id = t3.id)

    联合

    SELECT t2.id, t3.location FROM table2 t2 内连接 table3 t3 on(t2.id = t3.id)

    按 1 分组;

    【讨论】:

      猜你喜欢
      • 2021-04-10
      • 1970-01-01
      • 1970-01-01
      • 2012-12-26
      • 2018-06-20
      • 2018-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多