与另一列
替换来自列值我有2代表具有以下结构:与另一列
tab1:
| ID | Name | Col1 |
|----|-------|------|
| 1 | Peter | Null |
| 2 | Lisa | Null |
| 3 | Eddy | Null |
tab2:
| ID | Col1 |
|----|------|
| 1 | Abc |
| 1 | Def |
| 2 | Ghi |
我想以这样的方式加入这些表,从tab2
的col1
所有值出现在tab1
col1
。所以col1
应该只被替换:
| ID | Name | Col1 |
|----|-------|------|
| 1 | Peter | Abc |
| 1 | Peter | Def |
| 2 | Lisa | Ghi |
它与right join
:
SELECT tab1.id, name, tab2.col1 FROM tab1 right Join tab2 On tab1.id=tab2.id
但在这里我指定我只想col1
从tab2
出现,而不是从tab1
。在实际情况下,还有很多列,我不想指定它们中的每一个。
那么有没有一种更通用的方法来替换tab1
的列与tab2
的相应列?
你有没有尝试运行
SELECT tab1.ID, tab1.Name, tab2.* FROM tab1, tab2 WHERE tab1.ID=tab2.ID;
应该这样做
结果与我的结果有什么不同?在这种情况下,我还需要指定'tab2.col1'。 – user1170330
结果没有差异。你不是一样吗? –
我想要相同的,但没有明确指定'tab2.col1'。 – user1170330
使用内嵌视图,您可以返回只是名称和TAB1 ID,然后加入到表2,你就不要再然后是别名。因为他们不会生成T1 ...
Select T1.*, T2.* from tab2 t2
LEFT JOIN (Select ID, Name from tab1) T1
on T1.ID = T2.ID
Select * from tab2 t2
RIGHT JOIN (Select ID, Name from tab1) T1
on T1.ID = T2.ID
只是一个提示,大多数人发现'左连接'比'右连接'更容易理解。切换到'tab2左加入tab1'将使代码更容易理解和维护。 – jarlh
指定每个列。 – Strawberry
@Strawberry:这就是我想要避免的。查询应该是通用的,所以用户只需要指定第一个表(在这种情况下'tab1',但它也可以是任何其他表),而'tab2'永远不会改变。 – user1170330