возможно ли использовать собственные кортежи в качестве источника для оператора JOIN?
Вот пример того, что я ищу:
SELECT u.id, u.name FROM users u INNER JOIN {{tupl1},{tupel2},{tupel3},...}
В 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
Многие платформы 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
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, показывая их здесь