【问题标题】:Select a distinct value in multiple tables (sql)在多个表中选择一个不同的值(sql)
【发布时间】:2011-06-01 22:57:27
【问题描述】:

嗨,

我有一个数据库,其中包含 3 个表 TAB1、TAB2、TAB3,它们具有完全相同的列,例如:

TAB1
cola, colb, colc, cold
TABB
cola, colb, colc, cold
...

现在我想搜索所有不同的“colb”值,这是查询:

SELECT DISTINCT colb FROM TAB1

完美运行,但现在我将在我的 3 个表“TAB1”、“TAB2”、“TAB3”中搜索所有不同的“colb”值:

SELECT DISTINCT colb FROM TAB1, TAB2, TAB3

现在 SQL 返回一个错误:“字段列表中的列 'colb' 不明确” 经过一番搜索,我了解到这是因为我的 3 个表中存在“colb”列。

那么如何在我的 3 个表中搜索来自同一列的不同值?我不能使用 LEFT JOIN,因为我想在我的所有 3 个表中搜索,而不是其中一个。

你有什么想法吗?谢谢

【问题讨论】:

    标签: php sql database join


    【解决方案1】:

    在sybase中,你可以使用@cherouvim发布的语法,你可以把子查询想象成一个表。

    你也可以使用临时表

    select colb into #t1 from TAB1 
    insert into #t1(colb) values(select colb from TAB2) 
    insert into #t1(colb) values(select colb from TAB3) 
    select distinct colb from #t1
    

    【讨论】:

      【解决方案2】:

      从 tab1 union 中选择不同的可乐

      从 tab2 union 中选择不同的可乐

      从 tab3 中选择不同的可乐

      【讨论】:

      • Union 为您处理不同的事情。无需将其包含在查询中。
      【解决方案3】:
      SELECT DISTINCT TAB1.colb,TAB2.colb,TAB3.colb FROM TAB1, TAB2, TAB3
      

      【讨论】:

      • 这很可能会浪费太多资源来获得答案。根据 TAB1、TAB2 和 TAB3 的大小,这可能永远不会结束。
      【解决方案4】:

      这个带有联合的单一查询将为您处理不同的值。

      select colb from tab1 union
        select colb from tab2 union
        select colb from tab3;
      

      【讨论】:

        【解决方案5】:
        select colb from tab1 union 
        select colb from tab2 union 
        select colb from tab3
        

        【讨论】:

          猜你喜欢
          • 2012-09-04
          • 2020-09-30
          • 2012-07-03
          • 1970-01-01
          • 1970-01-01
          • 2011-02-16
          • 2013-03-29
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多