当前位置: 首页 > 面试题库 >

MYSQL如果选择查询返回0行,那么另一个选择查询?

柳胜
2023-03-14
问题内容

如果select * from table where x=1返回0行,那么我需要select * from table where x=2 [or some other query]。是否可以在带有条件语句的单个MySQL查询中执行此操作?

编辑: 所有答案均UNION有效,但前提是两个查询均从同一表(或具有相同列数的表)中选择。如果第二个查询应用于具有联接的其他表上怎么办?

让我写下我的查询以使问题更清楚:

第一:

SELECT  table1.a, table2.b  from table1 LEFT JOIN table2 ON table2.x= table1.x
WHERE .....

如果第一个结果为空,则:

第二名:

SELECT table1.a FROM table1 
WHERE ....

如果返回第一个查询,我将使用第一个查询的行,否则将使用第二个查询。


问题答案:

从我刚刚进行的快速测试来看,这似乎可行,并且无需检查x=1两次是否存在。

SELECT SQL_CALC_FOUND_ROWS *
FROM mytable
WHERE x = 1

UNION ALL

SELECT *
FROM mytable
WHERE 
FOUND_ROWS() = 0 AND x = 2;

编辑:在您对问题的澄清后,显然上述两个查询需要与UNION兼容才能起作用。

您更新的问题的答案是“否”。这在单个查询中是不可能的。您将需要使用一些条件过程逻辑来执行所需的查询。



 类似资料:
  • 问题内容: 我有三个表的简单文章应用程序: 在登录页面上,我想显示最新文章标题以及作者姓名和文章评论总数。主要问题是如何获取文章的评论总数,我没有弄对。我应该得到以下输出: 在我的实际应用程序中,我在文章表中添加了一个列,以显示对该文章的评论总数。当新注释添加到系统时,此列将更新。这样做的问题是,在添加新评论时,文章表被锁定了。在我的应用程序中,每分钟都会添加很多评论。因此,我试图避免通过重写SQ

  • 问题内容: 我有一个名为faq_questions的表,其结构如下: 我试图建立一个给定排序顺序的查询,选择具有最高排序顺序的行。 例子: 好的,假设我为已知的排序顺序(id 4)输入了5,我需要它返回ID为3的行。由于不能保证sort_order是连续的,所以我不能只选择known_sort_order + 1。 谢谢! 问题答案: 似乎太简单了,但是看起来像您所需要的:

  • 问题内容: 我正在寻找一个SQL查询来选择所有未由同一表上的另一个查询选择的记录。具体来说,我想选择所有具有特定字段(’fieldA’)重复项的记录,然后删除除其中一个记录以外的所有记录。 因此,一条select语句可能类似于以下内容(不起作用!): 如果不可能进行单个查询,那么最有效的解决方案是什么? 问题答案: 具体来说,我想选择所有具有特定字段(’fieldA’)重复项的记录,然后删除除其中

  • 问题内容: 我有一个具有以下字段的MySQL表: 其中父字段表示上层ID。例如,水果id是1,橙色是水果之一,因此父对象是1。 但是我想做一个有效的MySQL查询来获取所有记录,格式为parent-> children-> parent-> children格式。我怎样才能做到这一点? 查询的结果记录应类似于: 问题答案: 您需要mysql不支持的递归联接。您唯一可以做的就是确定最大深度(由于p-

  • 问题内容: 我发现了具有正确答案的类似问题。但是它们对我来说有点复杂。我只想要一个简单的基本声明。 我有: …和: 如何合并它们? 问题答案: 有关OUTPUT子句的更多信息,请查看此文章。

  • 问题内容: 主题表 SubjectToClass表 我需要列出的所有行,其中的表是不是在指定类的表。 我有这个但不能再走了 问题答案: