SQL:结合加入和

时间:2018-02-23 19:51:10

标签: sql join

我今天刚开始使用SQL并且有以下(可能是相当新手)的问题:

给出两个数据库Data1& Data2具有相同的行数和相同的第一列。我想从Data1获取所有列,但只获得满足涉及Data2列的条件的行。

我试过像

这样的东西
SELECT 
    column2
    column3
    ...

FROM
    Data1

INNER JOIN Data2 ON Data1.column1 = Data2.column1
    WHERE 'condition1 involving columns in Data2',
          'condition2 involving columns in Data2',
          ...                                    
;

但这并没有给我一个column1。如果我将它包含在上面的select语句中,则会抛出错误'列引用column1不明确'。

任何想法发生了什么?

2 个答案:

答案 0 :(得分:2)

问题是您要使用具有相同名称的列连接两个表。因此,在这些情况下,您必须在列名称前加上表名或别名(并且最好避免将来的错误为列名添加前缀,即使没有重复的名称)。在你的情况下Data1.column1

答案 1 :(得分:1)

基本上,总是在列名称之前,它们属于它们的表名,或者 - 更好的选择 - 使用表别名。例如:

select a.column1,
       b.column2,
       b.column3
from table1 a join table2 b on a.id = b.id
where b.some_column = 20

这样做,那里不会有任何含糊之处。

相关问题