我在sql server中创建了一个表,其中包含数据库中表的名称和一些其他信息。当我运行此查询时
SELECT upper(TABLE_NAME) TABLE_NAME, ISNULL(syn_schema,'N') syn_schema, isnull(syn_data,'N') syn_data
FROM information_schema.tables
left join sync_config on TABLE_NAME = TAB_NAME
where table_type = 'BASE TABLE'
ORDER BY TABLE_NAME
这将返回information_schema.tables中的数据,但不会返回sync_config表中的数据。 syn_schema和syn_data列位于sync_config表中。总而言之,join并不适用于两个表。我尝试将sync_config表中tab_name列的数据类型更改为VARCHAR中的SYSNAME。
由于
答案 0 :(得分:1)
好吧,如果连接不起作用,则表明TABLE_NAME = TAB_NAME
永远不会成立。检查表名称字段以查看它们是否确实包含您期望的内容。它们是否完全匹配,包括大小写(即使SQL在引用查询中的表时不区分大小写,表名的字符串比较可能 *区分大小写)?
除此之外,发布表格的结构和样本数据以获得更多帮助。
*感谢Martin Smith。