Используйте собственные кортежи в выражении JOIN - PullRequest
4 голосов
/ 22 августа 2011

возможно ли использовать собственные кортежи в качестве источника для оператора JOIN?

Вот пример того, что я ищу:

SELECT u.id, u.name FROM users u INNER JOIN {{tupl1},{tupel2},{tupel3},...}

Ответы [ 3 ]

4 голосов
/ 22 августа 2011

В SQL Server 2008 вы используете Конструктор табличных значений .

declare @T table(ID int)
insert into @T values (1),(2),(3),(4),(5)

select *
from @T as T1 
  inner join (
              values (1, 'Row 1'), 
                     (2, 'Row 2')
             ) as T2(ID, Col1)
    on T1.ID = T2.ID
2 голосов
/ 22 августа 2011

Многие платформы dbms поддерживают общие табличные выражения.

with my_own_tuples as (
    select 'value1' as column1, 'value2' as column2
    union all 
    select 'value3', 'value4'
    union all 
    select 'value5', 'value6'
)
select column1, column2
from my_other_table
inner join my_own_tuples on (my_own_tuples.column1 = my_other_table.column1);

Общие выражения таблиц PostgreSQL

0 голосов
/ 06 апреля 2015

MySql имеет некоторую поддержку для кортежей со сравнениями и равенством , хотя я изо всех сил пытаюсь найти для этого точную ссылку.

Например:

SELECT *
    FROM table1 t1
       INNER JOIN table2 t2
       ON (t1.Col1, t1.Col2) = (t2.Col1, t2.Col2);

И

SELECT *
    FROM table1 t1
       WHERE (t1.Col1, t1.Col2) <= ('SomeValue', 1234);

SqlFiddle, показывая их здесь

...