Как сделать запрос, где добавляется новый столбец с результатами совпадений? - PullRequest
1 голос
/ 26 сентября 2011

Как я могу сделать запрос, в котором я выбираю все элементы из таблицы table1 и сравниваю каждый из элементов table1 column2 с элементами table2 column2?

Последний запрос будет содержать дополнительный столбец 3 со значением 1 или 0, если найдено совпадение.Ниже приведены примеры таблиц и ожидаемый результат.

  • table1:

    _id  col1     col2
    ---  -------  ----
    0    Jon      25
    1    Tim      24
    2    Frank    38
    3    Josh     234
    4    Lettuse  23
    5    Whally   12
    
  • table2:

    _id  col1   col2
    ---  -----  ----
    0    House  45
    1    Dog    23
    2    Pat    24
    3    Lake   123
    4    Water  43
    5    Hot    2
    
  • newTable1Results:

    _id  col1     col2  col3
    ---  -------  ----  ----
    0    Jon      25    0
    1    Tim      24    1
    2    Frank    38    0
    3    Josh     234   0
    4    Lettuse  23    1
    5    Whally   12    0
    

Ответы [ 2 ]

1 голос
/ 26 сентября 2011

Вы можете использовать LEFT JOIN и вычислять столбец col3 в зависимости от того, было ли совпадение:

SELECT
  t1.*,
  CASE
    WHEN t2._id IS NULL THEN 0
    ELSE 1
  END AS col3
FROM table1 t1
  LEFT JOIN table2 t2 ON t1.col2 = t2.col2

В случае, если table2.col2 может содержать дубликаты, приведенный выше запрос может дать вам дубликаты какЧто ж.Тогда вы можете попробовать другой подход:

SELECT
  t1.*,
  CASE
    WHEN EXISTS (
      SELECT *
      FROM table2
      WHERE col2 = table1.col2
    )
      THEN 1
    ELSE 0
  END AS col3
FROM table1
1 голос
/ 26 сентября 2011

Я думаю, что вы ищете что-то вроде этого:

select t1._id, t1.col1, t1.col2, t2.col2 is not null as col3
from table1 t1
left outer join table2 t2 on t1.col2 = t2.col2
order by t1._id

Булевы значения SQLite равны нулю, и поэтому простой t2.col2 is not null в вашем SELECT даст вам ноль или единицу.

Вышесказанное должно дать вам это:

_id | col1   |col2 | col3
----+--------+-----+-----
  0 | Jon    |  25 |    0
  1 | Tim    |  24 |    1
  2 | Frank  |  38 |    0
  3 | Josh   | 234 |    0
  4 | Lettuse|  23 |    1
  5 | Whally |  12 |    0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...