我今天刚开始使用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不明确'。
任何想法发生了什么?
答案 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
这样做,那里不会有任何含糊之处。