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

Second SELECT query if first SELECT returns 0 rows(如果第一个 SELECT 返回 0 行,则第二个 SELECT 查询)
本文介绍了如果第一个 SELECT 返回 0 行,则第二个 SELECT 查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试加快 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 ALLEXISTS 一起使用:

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 查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Execute complex raw SQL query in EF6(在EF6中执行复杂的原始SQL查询)
Hibernate reactive No Vert.x context active in aws rds(AWS RDS中的休眠反应性非Vert.x上下文处于活动状态)
Bulk insert with mysql2 and NodeJs throws 500(使用mysql2和NodeJS的大容量插入抛出500)
Flask + PyMySQL giving error no attribute #39;settimeout#39;(FlASK+PyMySQL给出错误,没有属性#39;setTimeout#39;)
auto_increment column for a group of rows?(一组行的AUTO_INCREMENT列?)
Sort by ID DESC(按ID代码排序)