一尘不染

如果第一个SELECT返回0行,则第二个SELECT查询

mysql

我试图加快PHP脚本的速度,目前正在Mysql域中推送一些PHP逻辑。如果第一个Select不返回行或计数为零,是否可以进行其他选择查询?

请记住,第一个查询需要首先运行,并且 当第一个查询返回空集 时才 应激活第二个查询。

SELECT * FROM proxies WHERE (A='B') || SELECT * FROM proxies WHERE (A='C')

对于上面的2个查询,我有这段代码,但似乎每个查询运行两次(一次计数,一次返回)。有一个更好的方法吗?

IF (SELECT count(*) FROM proxies WHERE A='B')>0
    THEN SELECT * FROM proxies WHERE A='B'
ELSEIF (SELECT count(*) FROM proxies WHERE A='C')>0
    THEN SELECT * FROM proxies WHERE A='C'
END IF

阅读 315

收藏
2020-05-17

共1个答案

一尘不染

一种选择是使用UNION ALLEXISTS

SELECT * 
FROM proxies 
WHERE A='B'
UNION ALL
SELECT * 
FROM proxies 
WHERE A='C' AND NOT EXISTS (
    SELECT 1
    FROM proxies 
    WHERE A='B'
)

这将从存在的proxies表中返回行A='B'。但是,如果它们不存在,它将使用来查找那些行A='C'

2020-05-17