我正在研究SQL Sever,我想为从这三个表中提取的行分配唯一的ID,但id不应该重叠。
让我们说,表一包含汽车数据,表二包含房屋数据,表三包含城市数据。我想把所有这些数据都拉到一个表中,每个表都有一个唯一的ID,比如说1-100的车,101-200的车和300到400的城市。
如何仅使用选择查询来实现此目的。我不能使用插入语句。
更确切地说, 我有一个表与计算机系统/服务器主机信息,其ID为500-700。 我有另一个表,存储设备(id为200-600)和路由器(id为700-900)。我已经收集了系统数据。现在我想以这样的方式提取存储系统和路由器数据,使得我端的统一数据应该具有所有记录的唯一ID。这只需要使用SELECT查询即可完成。
我正在使用SELECT ABS(CAST(NEW((作为AS VARBINARY)AS INT))作为唯一ID并将其存储在临时表中(存储和路由器分开)。但我相信这可能会导致一些重叠。请建议任何其他方式来做到这一点。
An extension to this question:
Creating consistent integer from a string:
All I have is various strings like this
String1
String2Hello123
String3HelloHowAreYou
I Need to convert them in to positive integers say some thing like
String1 = 12
String2Hello123 = 25
String3HelloHowAreYou = 4567
Note that I am not expecting the numbers in any order.Only requirement is number generated for one string should not conflict with other
Now later after the reboot If I do not have 2nd string instead there is a new string
String1 = 12
String3HelloHowAreYou = 4567
String2Hello123HowAreyou = 28
Not that the number 25 generated for 2nd string earlier can not be sued for the new string.
Using extra storage (temp tables) is not allowed
答案 0 :(得分:2)
如果您不关心数据的来源:
with dat as (
select 't1' src, id from table1
union all
select 't2' src, id from table2
union all
select 't3' src, id from table3
)
select *
, id2 = row_number() over( order by _some_column_ )
from dat