我有2张桌子:
**Table user**
Username
**Table prize**
PrizeName
如何为每个奖品分配表奖中的行给我在表用户中拥有的每个用户名?
例如:
**Username**
Bob
Alice
**table prize**
Iphone5
Iphone6
结果:
**Username** **prize**
Bob iphone5
Alice iphone5
Bob iphone6
Alice iphone6
答案 0 :(得分:1)
这称为笛卡尔积。使用CROSS JOIN
。
SELECT *
FROM UserTable UT
CROSS JOIN PrizeTable PT;
答案 1 :(得分:1)
如果我对您的理解正确,以下内容将为您提供所需的信息:
SELECT Username, Prize
FROM
user
CROSS JOIN
prize
ORDER BY prize, Username
答案 2 :(得分:1)
使用交叉联接。 CROSS JOIN将返回结果集中的所有结果。以您的示例为例:
选择 名称p.PrizeName 从 dbo。[用户] 交叉加入奖p
这将返回:
鲍勃iphone 5 爱丽丝iPhone 5 鲍勃·iPhone 6 爱丽丝iphone 6
答案 3 :(得分:0)
使用CROSS JOIN
:
select u.username, p.prize
from users u cross join
prizes p;
我用复数形式命名表,因为它们包含多个实体实例(并且复数与关键字冲突的可能性较小)。
如果要“分配”它们,则可能需要连接表。为此,您通常需要具有ID并执行以下操作:
insert into user_prizes (user_id, prize_id)
select u.user_id, p.prize_id
from users u cross join
prizes p;
答案 4 :(得分:0)
INSERT INTO table_User_Prizes
(Username, PrizeName)
SELECT Table_User.Username,table_Prize.PrizeName
FROM Table_User,table_Prize
请注意,如果“ table_User_Prizes”具有更多列,则将它们填充为NULL。