根据另一个的结果执行查询

时间:2018-04-03 09:53:46

标签: mysql sql database tsql

我有一个输出“确定”的查询。

我想使用查询中的结果来运行另一个查询。

如果结果正常则不要运行。 如果是ERROR,则运行。

查询很慢,如果结果正常,我不想执行第二个查询。第二个查询检查错误。

我怎么能这样做?我在互联网上查了但是我不知道是否有这样的功能和它的名字。我不想使用嵌套查询或WITH表达式

谢谢!

4 个答案:

答案 0 :(得分:1)

您可以将查询结果放入变量,然后使用IF...ELSE

进行检查
declare @test varchar(10) = 'ok';

if @test != 'ok'
    begin
       --query if not 'ok'
    end
else
    begin
        --query if 'ok', or you can remove `else` at all if not required
    end

DEMO

答案 1 :(得分:1)

使用Try and Catch进行错误处理,按照以下步骤执行您要执行的操作:

如果执行查询1,则查询2跳过,否则执行查询2,如果查询1中有任何错误:

if (empty($received_date)) {
            $received_date= 'NULL';
}

答案 2 :(得分:0)

好吧,你可以创建一个变量来存储一个返回'OK'或'KO'(How to create a function with SQL Server)的函数的结果。

然后,您可以使用IF语句执行不同的查询 IF statement SQL Server

这可能是一个想法。

答案 3 :(得分:0)

将结果集捕获到变量中。还要确保您的条件返回一个或另一个且只返回一列

我添加了一个示例查询

declare @output VARCHAR(10)
SET @OUTPUT =
--sample query 
(select case when  SUM(s.SellingValue) = SUM(h.SellingValue) then 'OK' ELSE 'ERROR' END OUTPUT
from Missing_Sales s inner join Missing_Sales_TH h on s.Branch_no = h.Branch_no and s.date = h.Date)
BEGIN
IF @output = 'OK'
--sample query
SELECT * FROM Missing_Sales
ELSE 
--sample query
SELECT * FROM Missing_Sales_TH
END