2010-06-02 4 views
1

Этого запрос генерирует ошибку, потому что table2 не существует:Проверьте, если таблица существует в том, где

Select * FROM table WHERE table2.id IS NOT NULL 

Есть ли что-нибудь подобное для чеки table2, прежде чем применить проверку по идентификатору?

Select * FROM table WHERE (EXIST(table2) AND table2.id IS NOT NULL) or not EXIST(table2) 
+0

Мой SQL может быть ржавым, но как вы ссылаетесь на «table2», когда вы не включили его в часть FROM запроса? –

ответ

3

Вы должны запросить эту системную таблицу:

SELECT table_name 
FROM information_schema.tables 
WHERE table_schema = 'yourdatabasename' 
AND table_name = 'table2'; 

Если строка возвращается, то ваша таблица существует.

0

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

SELECT имя_таблицы FROM INFORMATION_SCHEMA.tables WHERE table_name = 'xxx';

Я не думаю, что это можно было бы сделать в одном выражении SQL.

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