2015-08-25 4 views
0

Допустим, у меня есть база данных со следующими двумя таблицами:Проверка существования данных accross таблиц

Table_A     Table_B 
id       val_A 
val      ... 
...      

Теперь мне нужно сделать следующее SELECT на Table A:

SELECT id, val, ..., isInB FROM Table_A WHERE .... 

Где ... - любые другие поля от Table_A, которые мне нужны, и isInB будет либо 1, либо 0 в зависимости от типа или нет. Table_A.val существует в Table_B.val_A

Можно ли это сделать?

+0

Cant это можно сделать с помощью JOIN? –

+0

@KayNelson не знаю - вот почему я спрашиваю – 537mfb

ответ

3

Вы просто должны LEFT JOIN обеих таблиц:

SELECT ta.id, 
     ta.val, 
     CASE WHEN tb.val_A IS NULL THEN 0 ELSE 1 END AS isInB 
FROM table_A ta 
LEFT JOIN table_B tb ON ta.val = tb.val_A 
+0

Работает отлично - пробовал другой способ, который сработал, но ваш намного проще - спасибо - не могу принять ваш answser еще - слишком скоро в соответствии с правилами сайта, - но вы fet this один – 537mfb

2

Попробуйте эту

SELECT Table_A.id, Table_A.val, IF(table_B.val_A IS NULL, 0, 1) as isInB 
FROM 
    Table_A 
    LEFT OUTER JOIN Table_B on Table_A.val = Table_B.val_A 
+0

ваше решение также работает - и намного более читаемый, чем ответ XL, я думаю - но он ответил первым - хороший, хотя - не знал о том, что в SQL – 537mfb

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