我有这个存储过程,
Create procedure [dbo].[Craping_GetFruitCrapedOrNot]
(
@FruitID int,
@CrateID int,
@FruitName varchar(100)
)
AS
SELECT Craping.Craped
FROM Fruits
INNER JOIN Craping ON Fruits.ID = Craping.FruitID
WHERE
(Fruits.FruitTable = @FruitName)
AND (Craping.FruitID = @FruitID)
AND (Craping.CrateID = @CrateID)
GO
现在我想检查Fruits表是否有提供水果名称的水果,如果没有水果则返回true。
如果Fruits
和Craping
表的内部联接没有FruitID
,CrateID
和FruitName
的记录,则返回true而不是false。
我们要做的是只在水果被抓到并记录到桌子时才会变得虚假。
答案 0 :(得分:1)
您可以使用IF EXISTS
来确定行的存在,然后使用CASE WHEN
将其作为您需要的结果进行投影,例如
Create procedure [dbo].[Craping_GetFruitCrapedOrNot]
(
@FruitID int,
@CrateID int,
@FruitName varchar(100)
)
AS
SELECT CASE WHEN EXISTS
(
SELECT 1
FROM Fruits
INNER JOIN Craping
ON Fruits.ID = Craping.FruitID
WHERE
(Fruits.FruitTable = @FruitName)
AND (Craping.FruitID = @FruitID)
AND (Craping.CrateID = @CrateID)
)
THEN 'False'
ELSE 'True'
END AS FruitNotCraped
GO
你介意我问一个问题:什么是Craped Fruit? ;)