【问题标题】:SQL - selecting multiple tables so as to combine multiple tablesSQL - 选择多个表以组合多个表
【发布时间】:2016-04-29 03:37:08
【问题描述】:

我想使用来自多个表 table1 和 table2 的SELECT * 来获取输出表,它只是附加到 table1 的 table2 数据。如何构造SELECT * FROM 语句?

表 1

id  model  datetime     driver   distance
---|-----|------------|--------|---------
1  | S   | 04/03/2009 | john   | 399 
2  | X   | 04/03/2009 | juliet | 244
3  | 3   | 04/03/2009 | borat  | 555

表2

id  model  datetime     driver   distance
---|-----|------------|--------|---------
4  | 3   | 03/03/2009 | john   | 300
5  | X   | 03/03/2009 | juliet | 200

期望的输出:

 model  datetime     driver   distance
 -----|------------|--------|---------
  S   | 04/03/2009 | john   | 399 
  X   | 04/03/2009 | juliet | 244
  3   | 04/03/2009 | borat  | 555
  3   | 03/03/2009 | john   | 300
  X   | 03/03/2009 | juliet | 200

【问题讨论】:

    标签: sqlite


    【解决方案1】:

    试试这个可能对你有帮助

        SELECT table1.model, table1.datetime, table1.driver, table1.distance FROM table1
        UNION ALL SELECT table2.model, table2.datetime, table2.driver, table2.distance FROM table2;
    

    【讨论】:

    • 输出不应包含id。为什么是 UNION 而不是 UNION ALL?
    • 现在是无效的 SQL。为什么是 UNION 而不是 UNION ALL?
    • @CL.. UNION 删除重复记录,UNION ALL 不会。
    • 为什么要尝试删除不存在的重复项?这只是通过强制数据库创建一个临时结果表来减慢查询速度。而且还是无效的 SQL。
    • @CL。好的好的...已更新答案
    【解决方案2】:

    union 语句从数据库中获取大数据时会变慢,您可以在此处使用 join,

    select * from table0 left join table2 on table0.b = table2.b where table2.col is not null
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-19
      • 2017-09-18
      • 1970-01-01
      • 2018-02-07
      • 2011-02-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-06
      相关资源
      最近更新 更多