2015-04-08 2 views
0

Это кажется простой вопрос, но я сравниваю таблицы содержат случайные таблицы и столбцы с SYSCOLUMNSсравнить таблицу с SYS столбцов

этот запрос даст мне недостающих столбцов

select object_name(syscolumns.id) , syscolumns.name 
from syscolumns 
where not exists 
    (select 1 
    from CHECKINGTABLE 
    where object_name(CHECKINGTABLE.id) = object_name(syscolumns.id) 
    and CHECKINGTABLE.name=syscolumns.name) 
    and object_name(syscolumns.id) ='TAB1' 

, но таким образом, это даст мне неправильные результаты

select object_name(syscolumns.id) , syscolumns.name 
    from syscolumns , CHECKINGTABLE 
    where not exists 
     (select 1 
     from CHECKINGTABLE 
     where object_name(CHECKINGTABLE.id) = object_name(syscolumns.id) 
     and CHECKINGTABLE.name=syscolumns.name) 
     and object_name(syscolumns.id) =object_name(CHECKINGTABLE.id) 

что я делаю неправильно? Мне нужен запрос для сравнения таблицы, которую я владею, с syscolumns, чтобы идентифицировать недостающие данные в моей таблице.

ответ

0

Вы можете попробовать следующее. Я не имею ASE DB под рукой, но синтаксис должен быть правильным, я надеюсь.

SELECT syscolumns.id , syscolumns.name 
FROM syscolumns LEFT OUTER JOIN CHECKINGTABLE 
ON (CHECKINGTABLE.id = syscolumns.id 
AND CHECKINGTABLE.name=syscolumns.name) 
WHERE CHECKINGTABLE.name IS NULL 
Смежные вопросы