繁体   English   中英

在SQL Server中连接两个表的所有行

[英]Joining All Rows of Two Tables in SQL Server

我的目标是组合2个表中的所有行。 我能想到的最简单的例子是:

表格1

Letter
A
B

表2

Number
0
1

组合表

Letter  Number
   A      0
   B      0
   A      1
   B      1

我想出了这个SQL语句:

select * from 
(
select * From (
    select 'A' as 'Letter'
    UNION
    select 'B' as 'Letter'
) as Letter
) as Letter,
(
select * from (
    select 0 as 'Number'
    UNION
    select 1 as 'Number'
) as Number
) as Number

这有效,但我不喜欢它。

  • 多次定义相同的别名
  • 7选择陈述? 真....

有谁知道更清洁的方式吗? 我确信答案已经存在,但我不知道如何搜索它。 谢谢大家

尝试这个

select * from table1 join table2 on 1=1

这是笛卡儿的产品,如果这是你想要的,
你只需要指定一些始终为真的连接条件。

并试试这个。

SELECT * FROM
(
SELECT 'A' AS ch
UNION ALL
SELECT 'B'
)
T1

JOIN

(
SELECT 0 AS dg
UNION ALL
SELECT 1
) T2

ON 1 = 1

在SQL Server中,您也可以执行此操作(如果您发现它更简洁/清晰)。

    SELECT * 
    FROM 
    (
       VALUES 
       ('A'), 
       ('B')
    )
    AS ch1(ch)
    JOIN
    (
        SELECT * 
        FROM 
        (
          VALUES 
          (0), 
          (1)
        )
        AS dg1(dg)
    ) TBL 

    ON 1 = 1

CROSS JOIN很容易......

SELECT *
FROM Table1
CROSS JOIN Table2

结果:

Letter                    Number
------------------------- -----------
A                         0
B                         0
A                         1
B                         1

(4 row(s) affected)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM