Select SQL 中的每条记录
Select every record in SQL
有什么简单的方法 select 两个表的每条记录,有点难以解释,但如果我有两个表 Client 和 Product
Client
A
B
C
Product
1
2
3
什么样的查询会得到这样的结果:
RESULT
A1
A2
A3
B1
B2
B3
C1
C2
C3
这叫做 cross join
(或笛卡尔积):
select c.field, p.field
from client c
cross join product p
此时将列组合在一起相当简单。
使用CROSS JOIN
SELECT C.client_column
+ CONVERT(VARCHAR(50), P.Product_column)
FROM client C
CROSS JOIN product P
SELECT C.Name + CAST(P.Id AS VARCHAR(10)) FROM Client C
CROSS JOIN Product P
或者,在 SQL 服务器中,您可以 select
来自以列分隔的表格列表。然后您可以在 where
子句中指定 join
条件,它模拟标准 join
,或者您不能指定任何 join
条件,这将创建类似于笛卡尔积一个 cross join
:
-- load test data
declare @Client table(Client char(1))
insert into @Client values('A'),('B'),('C')
declare @Product table(Product int)
insert into @Product values(1),(2),(3)
-- return cartesian product
select Client + cast(Product as char(1)) as RESULT
from Client,Product
有什么简单的方法 select 两个表的每条记录,有点难以解释,但如果我有两个表 Client 和 Product
Client
A
B
C
Product
1
2
3
什么样的查询会得到这样的结果:
RESULT
A1
A2
A3
B1
B2
B3
C1
C2
C3
这叫做 cross join
(或笛卡尔积):
select c.field, p.field
from client c
cross join product p
此时将列组合在一起相当简单。
使用CROSS JOIN
SELECT C.client_column
+ CONVERT(VARCHAR(50), P.Product_column)
FROM client C
CROSS JOIN product P
SELECT C.Name + CAST(P.Id AS VARCHAR(10)) FROM Client C
CROSS JOIN Product P
或者,在 SQL 服务器中,您可以 select
来自以列分隔的表格列表。然后您可以在 where
子句中指定 join
条件,它模拟标准 join
,或者您不能指定任何 join
条件,这将创建类似于笛卡尔积一个 cross join
:
-- load test data
declare @Client table(Client char(1))
insert into @Client values('A'),('B'),('C')
declare @Product table(Product int)
insert into @Product values(1),(2),(3)
-- return cartesian product
select Client + cast(Product as char(1)) as RESULT
from Client,Product