В любом случае ...
Используйте что-то вроде
WITH
v_table_a (n, rowid) AS (
SELECT 2, 1
UNION ALL
SELECT 4, 2
UNION ALL
SELECT 5, 3
),
v_table_b (s, rowid) AS (
SELECT 'valuex', 1
UNION ALL
SELECT 'valuey', 2
UNION ALL
SELECT 'valuez', 3
)
SELECT v_table_a.n, v_table_b.s
FROM v_table_a
LEFT JOIN v_table_b ON ( v_table_a.rowid = v_table_b.rowid );
для "виртуальных" таблиц (с WITH
или без),
WITH RECURSIVE vr_table_a (n, rowid) AS (
VALUES (2, 1)
UNION ALL
SELECT n + 2, rowid + 1 FROM vr_table_a WHERE rowid < 3
)
, vr_table_b (s, rowid) AS (
VALUES ('I', 1)
UNION ALL
SELECT s || 'I', rowid + 1 FROM vr_table_b WHERE rowid < 3
)
SELECT vr_table_a.n, vr_table_b.s
FROM vr_table_a
LEFT JOIN vr_table_b ON ( vr_table_a.rowid = vr_table_b.rowid );
для "виртуальных" таблиц, использующих рекурсивные WITH
s (в этом примере значения - другие, чем ваши, но я думаю, вы поняли) и
CREATE TABLE p_table_a (n INT);
INSERT INTO p_table_a VALUES (2), (4), (5);
CREATE TABLE p_table_b (s VARCHAR(6));
INSERT INTO p_table_b VALUES ('valuex'), ('valuey'), ('valuez');
SELECT p_table_a.n, p_table_b.s
FROM p_table_a
LEFT JOIN p_table_b ON ( p_table_a.rowid = p_table_b.rowid );
для физических таблиц.
Хотя я бы был осторожен с последним. Быстрый тест показывает, что числа rowid
а) используются повторно - когда некоторые строки удаляются, а другие вставляются, вставленные строки получают rowid
s из старых строк (то есть rowid
в SQLite isn ' t уникально за время жизни строки, тогда как, например, Oracle rowid
AFAIR is) - и b) соответствует порядку вставки. Но я не знаю и не нашел подсказки в документации, если это гарантировано или может быть изменено в других / будущих реализациях. Или, может быть, это просто совпадение в моей тестовой среде.
(Как правило, физический порядок строк может изменяться (даже в пределах одной и той же базы данных с использованием одной и той же DMBS в результате некоторой реорганизации), и поэтому не является хорошим выбором, на который можно положиться. И это не гарантируется, запрос будет вернуть результат, упорядоченный по физической позиции в таблице (он может вместо этого использовать порядок некоторого индекса или иметь частичный результат, упорядоченный другим способом, влияющим на порядок вывода). Рассмотрите возможность разработки таблиц с использованием общих (сортирующих) ключей в соответствующих строках для заказа и присоединиться.)