SQL: взятие одного столбца из двух таблиц и помещение их в одну предопределенную таблицу - PullRequest
0 голосов
/ 08 апреля 2019

Просто небольшая ошибка с моего плеча, но для того, для чего я использую этот код, это не конец света, если на этот не ответят. В предисловии несколько вещей: я знаю, что это совершенно неуместно , я знаю, что это никогда не должно использоваться - не говоря уже о том, чтобы быть выполненным - в производственной среде, и я знаю, что корень этой операции совершенно нетрадиционно, но я все равно спрашиваю:

Если у меня есть две таблицы с набором значений, которые я хочу собрать и поместить в одну другую, комбинированную и предварительно определенную таблицу рядом, как я могу это сделать?

Прямо сейчас у меня есть два заявления, которые делают

INSERT INTO table ('leftCol') SELECT NAME FROM smolT1 ORDER BY num DESC LIMIT 3
INSERT INTO table ('rightCol') SELECT NAME FROM smolT2 ORDER BY num DESC LIMIT 3

но, как можно себе представить, этот запрос заканчивается чем-то вроде ...

leftCol      | rightCol
Jack         | 
James        | 
John         |
             | Jill
             | Justina
             | Jesebelle

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

Чтобы добавить, да, у этих двух таблиц есть NAME общее, но с учетом того, как я их опрашиваю, они совершенно не имеют отношения друг к другу, и не следует связывать друг с другом, только что отображается рядом.

Мне просто любопытно, может ли один запрос заставить эти два несвязанных запроса работать вместе и аккуратно печатать в форме, или мне просто нужно жить с этими данными, выглядящими так:

Ура!

1 Ответ

1 голос
/ 08 апреля 2019

Самые последние версии SQLite поддерживают оконные функции.Это позволяет вам:

select min(name1) as name1, min(name2) as name2
from ((select name as name1, null as num2 row_number() over (order by name) as seqnum
       from smolt1
       where name is not null
      ) union all
      (select null, name, row_number() over (order by name) as seqnum
       from smolt2
       where name is not null
      )
     ) lr
group by seqnum;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...