这是我第一次来这里,我是一个初学者,所以请好好忍受我的白痴主义:)
我想在mysql中运行两个查询,从两个数据库开始,如果第一个查询生成没有结果,那么第二个查询应该搜索第二个数据库中的相同内容。
我们有汽车保险数据,有两个数据库,一个用于个人客户,第二个用于企业客户。我们需要通过chasis
no或引擎号来搜索车辆。从两个数据库开始,但是如果从第一个数据库找不到结果,那么它应该用于第二个数据库。
首先查询:
SELECT * FROM skpoly_vw4 WHERE CHASIS = 878933
第二次查询:
SELECT * FROM vw_motorschedule where sw_skpoly_chasis = 878933
我们有一个数据库,但我们有两个不同的视图,对于个人客户来说是skpoly_vw4,对于企业客户来说是vw_motorschedule
答案 0 :(得分:1)
这个怎么样?
SELECT SQL_CALC_FOUND_ROWS *
FROM DATABASE1
WHERE database1_CHASIS = 12345**
UNION ALL
SELECT *
FROM DATABASE2
WHERE FOUND_ROWS() = 0 AND database2_chasis= 12345**
每次对话,你得到mysql错误号1222.这种情况正在发生,因为在表skpoly_vw4
& vw_motorschedule
个字段数不相同。对于UNION ALL,字段必须相同。
E.g。在table1中你有id和name,而在table2中你有id,fname,lname然后如果你试着UNION ALL
与select *
一起使用它就不会像在table1那样有效,但是在table2中有2列是3列。
希望你有我想说的话。
答案 1 :(得分: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
答案 2 :(得分: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);