问题描述
我正在尝试加快 PHP 脚本的运行速度,目前我正在该事物的 Mysql 域中推送一些 PHP 逻辑.如果第一个 Select 不返回行或计数为零,是否有办法进行不同的选择查询?
I am trying to speed up a PHP script and I am currently pushing some PHP logic in the Mysql domain of the thing. Is there a way to make a different select query if the first Select returns no rows, or a count of zero ?
请记住,第一个查询需要先运行,第二个查询应该仅在第一个查询返回空集时激活.
Keeping in mind that the first query needs to run first, and the second should only be activated if the first one returns an empty set.
SELECT * FROM proxies WHERE (A='B') || SELECT * FROM proxies WHERE (A='C')
对于上面的 2 个查询,我有这个代码,但它似乎每个查询运行两次(一次计数,一次返回).有没有更好的方法来做到这一点?
For the above 2 queries I have this code, but it seems to run each query twice (once to count, and once to return). Is there a better way to do this?
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
推荐答案
一种选择是将 UNION ALL 与 EXISTS 一起使用:
One option would be to use UNION ALL with EXISTS:
SELECT *
FROM proxies
WHERE A='B'
UNION ALL
SELECT *
FROM proxies
WHERE A='C' AND NOT EXISTS (
SELECT 1
FROM proxies
WHERE A='B'
)
- SQL Fiddle 演示
这将返回 proxies 表中的行,其中 A='B' 如果它们存在.但是,如果它们不存在,它将查找那些带有 A='C' 的行.
This will return rows from the proxies table where A='B' if they exist. However, if they don't exist, it will look for those rows with A='C'.
这篇关于如果第一个 SELECT 返回 0 行,则第二个 SELECT 查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!


大气响应式网络建站服务公司织梦模板
高端大气html5设计公司网站源码
织梦dede网页模板下载素材销售下载站平台(带会员中心带筛选)
财税代理公司注册代理记账网站织梦模板(带手机端)
成人高考自考在职研究生教育机构网站源码(带手机端)
高端HTML5响应式企业集团通用类网站织梦模板(自适应手机端)