0

这是我第一次来这里,我是一个初学者,所以请忍受我的白痴主义:)

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

我们有汽车保险数据,有两个数据库,一个用于个人客户,第二个用于企业客户。我们需要通过车辆chasis编号或发动机编号来搜索车辆。来自两个数据库,但如果从第一个数据库中没有找到结果,那么它应该去第二个数据库。

第一个查询:

SELECT * FROM skpoly_vw4 WHERE CHASIS = 878933

第二个查询:

SELECT * FROM vw_motorschedule where sw_skpoly_chasis = 878933

我们有一个数据库,但其中有两个不同的视图,分别是针对个人客户的 skpoly_vw4 和针对企业客户的 vw_motorschedule

4

3 回答 3

2

这个怎么样?

SELECT SQL_CALC_FOUND_ROWS * 
FROM DATABASE1
WHERE database1_CHASIS = 12345**

UNION ALL

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

演示

更新 1

每个对话,你得到 mysql 错误号 1222。发生这种情况是因为表skpoly_vw4vw_motorschedule字段数不同。对于 UNION ALL,字段必须相同。

例如,在 table1 中有 id 和 name,在 table2 中有 id、fname、lname,那么如果你尝试使用UNION ALLselect *,它将无法工作,因为在 table1 中有 2 列,但在 table2 中有 3 列。

希望你明白我的意思。

还要从具有不同列数的两个表中读取select *

于 2012-06-27T08:45:50.477 回答
0

尝试这个

$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);
于 2012-06-27T08:24:14.443 回答
0

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

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

编辑:这是一个例子

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
于 2012-06-27T08:18:37.350 回答