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 

使用CROSS JOIN

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