2010-06-02 12 views
1

Cette requête génère une erreur car table2 n'existe pas:Vérifiez si une table existe dans où

Select * FROM table WHERE table2.id IS NOT NULL 

Y at-il quelque chose comme ça pour vérifier la table2 avant d'appliquer la vérification de l'id?

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

Mon SQL est peut-être rouillé mais comment faites-vous référence à "table2" lorsque vous ne l'avez pas inclus dans la partie FROM de la requête? –

Répondre

3

Vous devez interroger cette table système:

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

Si une ligne est retournée, alors votre table existe.

0

Je ne crois pas qu'il existe une commande ou une fonction dans SQL standard pour ce faire. Vous pouvez interroger le dictionnaire de données pour vérifier si la table existe avant d'émettre votre requête SQL comme suit:

SELECT nom_table FROM INFORMATION_SCHEMA.tables WHERE nom_table = 'xxx';

Je ne pense pas que cela puisse être fait dans une seule instruction SQL.