2010-11-30 4 views
0

sqlite3Столбец, подтверждающий существование строки в другой таблице

У меня есть две таблицы, таблица1 и таблица2.

В обеих этих таблицах есть столбец с именем Name.

Хотелось бы запросить таблицу2 и вернуть столбец Name. Кроме того, я хотел бы вернуть столбец, содержащий значения 1 или 0, в зависимости от того, содержат ли какие-либо строки в таблице 1 одинаковое значение для Name.

Каков наиболее эффективный способ сделать это?

Я ищу что-то вроде:

SELECT 
    Name, IF EXISTS (SELECT * FROM Table1 WHERE Table1.Name = Table2.Name) 1 ELSE 0 
FROM 
    Table2 

ответ

1

К сожалению, я не очень хорошо знаком с SQLite, но это должно работать для вас. Трюк - это левое внешнее соединение и сравнение по объединенной таблице.

SELECT 
    Table2.Name, 
    CASE WHEN Table1.Name IS NOT NULL THEN 1 ELSE 0 END 
FROM 
    Table2 
LEFT OUTER JOIN 
    Table1 ON Table1.Name = Table2.Name 

Я не уверен, что синтаксис CASE является лучшим, но если вы больше знакомы с условными в SQLite вы можете очистить эту часть вверх.

+0

Я забыл все о CASE! Спасибо! – Andrew 2010-11-30 22:33:40

Смежные вопросы