首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果第一个查询没有结果,如何在mysql上运行两个查询

问如果第一个查询没有结果,如何在mysql上运行两个查询
EN

Stack Overflow用户
提问于 2012-06-27 16:13:34
回答 3查看 2.2K关注 0票数 0

这是我第一次来这里,我是一个初学者,所以请容忍我的愚蠢:)

我想在mysql中从两个数据库中运行两个查询,如果第一个查询没有结果,那么第二个查询应该在第二个数据库中搜索相同的东西。

我们有汽车保险数据,有两个数据库,一个用于个人客户,另一个用于企业客户。我们需要根据车辆的chasis号或引擎号来搜索车辆。但是如果从第一个数据库没有找到结果,那么它应该去第二个数据库。

第一个查询:

代码语言:javascript
复制
SELECT * FROM skpoly_vw4 WHERE CHASIS = 878933

第二个查询:

代码语言:javascript
复制
SELECT * FROM vw_motorschedule where sw_skpoly_chasis = 878933

我们有一个数据库,但在IT中,我们有两个不同的视图,即用于个人客户的skpoly_vw4视图和用于企业客户的vw_motorschedule视图

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-06-27 16:18:37

在执行第一个查询后使用SELECT FOUND_ROWS( )。

也就是说,在运行第二个查询之前检查是否为SELECT FOUND_ROWS( )>0

编辑:下面是一个示例

代码语言:javascript
复制
SELECT * FROM skpoly_vw4 WHERE CHASIS = 878933

DECLARE @rows INT
SET @rows= FOUND_ROWS();
if (@rows>0)
SELECT * FROM vw_motorschedule where sw_skpoly_chasis = 878933
票数 0
EN

Stack Overflow用户

发布于 2012-06-27 16:45:50

这个怎么样?

代码语言:javascript
复制
SELECT SQL_CALC_FOUND_ROWS * 
FROM DATABASE1
WHERE database1_CHASIS = 12345**

UNION ALL

SELECT * 
FROM DATABASE2 
WHERE FOUND_ROWS() = 0 AND database2_chasis= 12345** 

Demo

更新1

每次会话,您都会得到mysql错误号1222。之所以会发生这种情况,是因为表skpoly_vw4和vw_motorschedule中的字段数量不同。对于UNION ALL,字段必须相同。

例如,在table1中你有id和name,在table2中你有id,fname,lname,如果你试图在select *中使用UNION ALL,它不会像在table1中那样工作,但是在table2中有3列。

希望你明白我的意思了。

另请阅读.

票数 2
EN

Stack Overflow用户

发布于 2012-06-27 16:24:14

尝尝这个

代码语言:javascript
复制
$query = mysql_query("SELECT * FROM DATABASE1 WHERE database1_CHASIS = 12345");

if(mysql_num_rows($query)==0){
   $query = mysql_query("SELECT * FROM DATABASE2 where database2_chasis= 12345");
}

$customer = mysql_fetch_assoc($query);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11221975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档