试图找到一个 table 中的所有列而不是另一个中的列 - 左连接不起作用
Trying to find all columns in one table not in another -- left join not working
我试图通过在 Information_schema 和 COLUMN_NAME = 上使用自联接来查找一个 table 中存在而另一个中不存在的所有列COLUMN_NAME 并且它是内部连接本身。我似乎无法弄清楚我的逻辑有什么问题:
select c.Column_name, c2.Column_name
from information_schema.columns c
left outer join Information_Schema.Columns c2
ON c.COLUMN_NAME = c2.column_name
Where c.TABLE_NAME = 'Table1'
and c2.TABLE_NAME = 'Table2'
我应该得到
Col1(a) | Col1(b)
Col2(a) | null
Col3(a) | Col3(b)
Col4(a) | Col4(b)
Col5(a) | null
但我得到的是
Col1(a) | Col1(b)
Col3(a) | Col3(b)
Col4(a) | Col4(b)
这是为什么?
right table left 联接的过滤器应仅在 ON 子句内。在 where 子句中指定它们时,您的左连接会自动变成内连接。
select c.Column_name, c2.Column_name
from information_schema.columns c
left outer join Information_Schema.Columns c2
ON c.COLUMN_NAME = c2.column_name AND c2.TABLE_NAME = 'Table2'
Where c.TABLE_NAME = 'Table1'
我试图通过在 Information_schema 和 COLUMN_NAME = 上使用自联接来查找一个 table 中存在而另一个中不存在的所有列COLUMN_NAME 并且它是内部连接本身。我似乎无法弄清楚我的逻辑有什么问题:
select c.Column_name, c2.Column_name
from information_schema.columns c
left outer join Information_Schema.Columns c2
ON c.COLUMN_NAME = c2.column_name
Where c.TABLE_NAME = 'Table1'
and c2.TABLE_NAME = 'Table2'
我应该得到
Col1(a) | Col1(b)
Col2(a) | null
Col3(a) | Col3(b)
Col4(a) | Col4(b)
Col5(a) | null
但我得到的是
Col1(a) | Col1(b)
Col3(a) | Col3(b)
Col4(a) | Col4(b)
这是为什么?
right table left 联接的过滤器应仅在 ON 子句内。在 where 子句中指定它们时,您的左连接会自动变成内连接。
select c.Column_name, c2.Column_name
from information_schema.columns c
left outer join Information_Schema.Columns c2
ON c.COLUMN_NAME = c2.column_name AND c2.TABLE_NAME = 'Table2'
Where c.TABLE_NAME = 'Table1'