选择名称在另一个表中不存在的列

时间:2017-08-01 11:06:55

标签: sql sql-server select dynamic-sql

有没有办法只选择名字不在另一个表上的列?例如

Table A                         Column B
ID  | Name   | Address          Address
-----------------------
1   | Daniel | dummy

在这个例子中,我的select语句应该是这样的:

select ID, Name from Column A

我看到有人在谈论动态SQL,但我无法找到解决问题的好例子,我们非常感谢任何帮助。

2 个答案:

答案 0 :(得分:3)

以下是使用动态SQL执行此操作的方式的一个版本:

var oTable = $('#tblTestResults').DataTable();
oTable.fnGetData().length;  // gives no of record in datable

这有点简化,以显示如何起诉declare @cols varchar(max); set @cols = NULL; select @cols = coalesce(@cols + ', ' + column_name, column_name) from information_schema.columns ca where ca.table_name = 'A' and ca.column_name not in (select cb.column_name from information_schema.columns cb where cb.table_name = 'B' ); declare @sql varchar(max); set @sql = 'select [cols] from A'; set @sql = replace(@sql, '[cols]', @cols); exec sp_executesql @sql; 表。它可以在很多情况下使用,但不是最通用的:

  • 不考虑架构名称。
  • 假设所有名称都是简单的ASCII。
  • 它不会转义列名称(假设名称不需要转义)。

答案 1 :(得分:0)

WHERE子句中选择另一个表。

SELECT ID, NAME
FROM ColumnA
WHERE NAME NOT IN (SELECT NAME FROM COLUMNB)