【问题标题】:Join two table without foreign key in an insert statement在插入语句中加入两个没有外键的表
【发布时间】:2023-03-16 23:55:03
【问题描述】:

假设我有两个表 A 和 B

表 A

name   |   age
----------------
jack   |  13
hanna  |   28

表 B

 id
-----
 1
 2

我想在另一个表 C 中插入以下内容

表 C

id   |  name  |  age
--------------------
1    |  jack  | 13
2    | hanna  | 28

我正在这样做

INSERT INTO C (id, name, age)
SELECT   b.id,  a.name,  a.age
FROM A a, B b

除了得到我想要的,我得到了这个:

id   |  name  |  age
--------------------
1    |  jack  |  13
1    |  hanna |  28
2    |  jack  |  13
2    |  hanna |  28

你怎么能解决这个问题?

【问题讨论】:

  • 两张表是什么关系?
  • 表格之间没有关系,这就是我寻求您帮助的原因
  • 你会接受什么作为有意义的输出?
  • 我已经提到了我想要得到的东西

标签: sql sql-server join foreign-keys


【解决方案1】:
declare @a table (name varchar(50),age int)
Declare @b table (id int)

insert into @a 
select 'jack',13
union select 'hanna',28

insert into @b
select 1
union select 2

Select id,name,age from
(
Select a.* ,ROW_Number() over (order by name) as rn
from @a a
)x
JOIN
(
Select b.* ,ROW_Number() over (order by ID) as rn
from @b b
)y
ON x.rn=y.rn
order by ID

【讨论】:

  • 非常感谢,你是我的救命恩人 :)
【解决方案2】:

您可以编写此查询以在表 c 中插入所需的行

insert into #c
select id, name, age from (
 ( select ROW_NUMBER() over (order by name) as Aid, name, age from #A ) ATest
inner join (select ROW_NUMBER() over (order by id) as Bid, id from #B) Btest on Aid = Bid
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-30
    • 1970-01-01
    • 2015-07-17
    • 1970-01-01
    • 1970-01-01
    • 2017-07-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多