如何在SQL中的IF EXISTS中使用AND条件?

时间:2022-04-06 20:37:54
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

I want to combine the 2 IF confitions and perform the update only when both of them are satisfied. Is there some way in which I can club 2 IF EXISTS?

我希望结合2个IF混淆并仅在满足两个时才执行更新。我有什么方法可以参加2 IF EXISTS吗?

3 个解决方案

#1


36  

Simple:

简单:

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

#2


6  

No need to select all columns by doing SELECT * . since you are checking for existence of rows , do SELECT 1 instead to make query faster.

不需要通过SELECT *选择所有列。因为您正在检查是否存在行,所以请执行SELECT 1以更快地进行查询。

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

#3


0  

Change the title and description empty

将标题和说明更改为空

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

#1


36  

Simple:

简单:

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

#2


6  

No need to select all columns by doing SELECT * . since you are checking for existence of rows , do SELECT 1 instead to make query faster.

不需要通过SELECT *选择所有列。因为您正在检查是否存在行,所以请执行SELECT 1以更快地进行查询。

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

#3


0  

Change the title and description empty

将标题和说明更改为空

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