0

这是一个具体的问题。

我有一个包含数据的 Excel 表。类似的数据存在于关系数据库表中。一些行可能不存在,或者可能存在一些额外的行。目标是用表格中的数据验证excel表中的数据。

我有以下查询

  Select        e_no, start_dt,end_dt
  From         MY_TABLE
  Where        e_no In 
  (20231, 457) 

在这种情况下,数据库中不存在 e_no 457(因此不返回)。但我希望我的查询返回一行,即使它不存在(457、null、null)。我怎么做 ?

4

3 回答 3

3

For Sql-Server:使用临时表或表类型变量并与之左MY_TABLE连接

Sql-Server 小提琴演示

Declare @Temp Table (e_no int)

Insert into @Temp
Values (20231), (457) 

Select   t.e_no, m.start_dt, m.end_dt
From     @temp t left join MY_TABLE m on t.e_no = m.e_no

如果您传递的值是 csv 列表,则使用拆分函数获取插入到 @Temp 的值。

于 2013-03-19T16:49:00.820 回答
0

Why not simply populate a temporary table in the database from your spreadsheet and join against that? Any other solution is probably going to be both more work and more difficult to maintain.

于 2013-03-19T16:43:13.750 回答
0

你也可以这样做UNION

Select
     e_no, start_dt ,end_dt
From         MY_TABLE
Where e_no In (20231, 457) 

UNION

Select 457, null, null
于 2013-03-19T17:11:28.727 回答