2013-01-15 97 views
0

下面的sql語句(不帶if)返回1行,1列= 8但是如果我在SELECT和<上遇到語法錯誤。我試圖做的是如果有少於50行返回測試true。如果返回50行,則返回false。sql如果語法不正確

感謝您的幫助

IF SELECT COUNT([VDeck_ID]) FROM [SecondLifeDatabases].[dbo].[YuGiOh-Cards] 
    WHERE [User_ID] = 
      (SELECT [ID] FROM [SecondLifeDatabases].[dbo].[YuGiOh-Users] 
      WHERE [UUID] = 'D38C3475-C995-4EB2-85D0-F2A3ED1D23A0') 
       and [VDeck_ID] = 
        (SELECT [ID] FROM [SecondLifeDatabases].[dbo].[YuGiOh-VDecks] 
         WHERE [DeckName] = 'NewDeckName') 
    < 50 
BEGIN 
    UPDATE [SecondLifeDatabases].[dbo].[YuGiOh-Cards] 
    SET [VDeck_ID] = 
     (SELECT [ID] FROM [SecondLifeDatabases].[dbo].[YuGiOh-VDecks] 
     WHERE [User_ID] = 
      (SELECT [ID] FROM [SecondLifeDatabases].[dbo].[YuGiOh-Users] 
      WHERE [UUID] = 'D38C3475-C995-4EB2-85D0-F2A3ED1D23A0') 
       and [DeckName] = 'NewDeckName') 
       WHERE [ID] = '11' 
END 
+2

哪個SQL? MySQL或MS SQL或Oracle?我猜MS SQL ... –

+0

@PraveenKumar:「[dbo]」通常是Microsoft SQL Server的字段標記。 –

+0

@Catcall這就是我說它可能是MS SQL的原因。 –

回答

0

你需要括號...

IF (SELECT COUNT(..) FROM ...) > 50 
2

圍繞select聲明認沽括號中的if子句中:

IF (SELECT COUNT([VDeck_ID]) FROM [SecondLifeDatabases].[dbo].[YuGiOh-Cards] 
    WHERE [User_ID] = 
      (SELECT [ID] FROM [SecondLifeDatabases].[dbo].[YuGiOh-Users] 
      WHERE [UUID] = 'D38C3475-C995-4EB2-85D0-F2A3ED1D23A0') 
       and [VDeck_ID] = 
        (SELECT [ID] FROM [SecondLifeDatabases].[dbo].[YuGiOh-VDecks] 
         WHERE [DeckName] = 'NewDeckName') 
    ) 
    < 50 
BEGIN 
    UPDATE [SecondLifeDatabases].[dbo].[YuGiOh-Cards] 
    SET [VDeck_ID] = 
     (SELECT [ID] FROM [SecondLifeDatabases].[dbo].[YuGiOh-VDecks] 
     WHERE [User_ID] = 
      (SELECT [ID] FROM [SecondLifeDatabases].[dbo].[YuGiOh-Users] 
      WHERE [UUID] = 'D38C3475-C995-4EB2-85D0-F2A3ED1D23A0') 
       and [DeckName] = 'NewDeckName') 
       WHERE [ID] = '11' 
END 
+0

+1不像我這樣懶惰:) – RobJohnson

+0

哇。我覺得這是一個小菜 – birddseedd