Вопрос: Объединение всех строк из двух таблиц в 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 выберите утверждения? действительно....

Кто-нибудь знает более чистый способ сделать это? Я уверен, что ответ уже есть, но я понятия не имел, как его искать. Спасибо всем


3


источник


Ответы:


Попробуй это

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

6



Достаточно просто CROSS JOIN...

SELECT *
FROM Table1
CROSS JOIN Table2

Результат:

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

(4 row(s) affected)

7