it-swarm.com.de

Wie kann ich die AND-Bedingung in IF EXISTS in SQL verwenden?

IF EXISTS(SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'X' AND COLUMN_NAME = 'Y') 

IF EXISTS(SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'Z' AND COLUMN_NAME = 'A')
BEGIN
    UPDATE [dbo].[X] 
        SET Y= (SELECT inst.[A] FROM [dbo].[Z] s WHERE s.[B] = [dbo].[x].[B]);
END    
    GO

Ich möchte die beiden ZF-Bedingungen kombinieren und das Update nur durchführen, wenn beide erfüllt sind. Gibt es eine Möglichkeit, wie ich 2 IF EXISTS schlagen kann?

21
user811433

Einfach: 

IF EXISTS(SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'X' AND COLUMN_NAME = 'Y') 
AND EXISTS(SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'Z' AND COLUMN_NAME = 'A')

BEGIN
    UPDATE [dbo].[X] 
        SET Y= (SELECT inst.[A] FROM [dbo].[Z] s WHERE s.[B] = [dbo].[x].[B]);
END    
GO
44
Vlad G.

Sie müssen nicht alle Spalten mit SELECT * auswählen. Da Sie das Vorhandensein von Zeilen prüfen, führen Sie stattdessen SELECT 1 aus, um die Abfrage zu beschleunigen. 

IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS
              WHERE TABLE_NAME = 'X' AND COLUMN_NAME = 'Y')

IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS 
          WHERE  TABLE_NAME = 'Z' AND COLUMN_NAME = 'A')

    BEGIN
        UPDATE [dbo].[X] 
            SET Y= (SELECT inst.[A] FROM [dbo].[Z] s WHERE s.[B] = [dbo].[x].[B]);
    END    
        GO
6
Mudassir Hasan

Ändern Sie den Titel und die Beschreibung leer

UPDATE `li_categories`
  SET description = CASE
    WHEN description = '' THEN CONCAT('optional text ', title, ' optional text')
    ELSE description
    END
WHERE
 id
0
Limitless isa