如果第一个结果集为空,则SQL UNION不显示第二个结果集的结果

时间:2011-12-12 06:46:20

标签: php sql

我使用SQL UNION Operator

加入了两个SQL查询

示例:

$query1 = "SELECT * FROM employees WHERE emp_first_name LIKE '%Donald%'";

$query2 = "SELECT * FROM employees WHERE emp_last_name LIKE '%George%'";

$final_query = $query1 . " UNION " . $query2

当我运行此$ final_query时,如果第一个查询的结果集不为空,它会显示两个查询的结果。如果第一个查询具有空结果集,则即使第二个查询在数据库中具有某些值,也不会显示结果。

有人可以解释问题所在。

注意:不建议我使用单个查询,我有理由使用两个查询。

2 个答案:

答案 0 :(得分:1)

mysql> create table employees (emp_first_name varchar(255), emp_last_name varchar(255)); 

查询OK,0行受影响(0.01秒)

mysql> insert into employees values ('hasan','khan'),('john','doe'); 

查询正常,2行受影响(0.00秒)记录:2重复:0警告:0

mysql> select * from employees where emp_first_name like '%nothing%' union select * From employees where emp_last_name like '%doe%';

+----------------+---------------+ 
| emp_first_name | emp_last_name |
+----------------+---------------+ 
| john           | doe           |
+----------------+---------------+ 

1行(0.00秒)

对我来说很好。您发布的查询与您正在执行的查询不同,或者您的代码中存在问题。

答案 1 :(得分:0)

使用

union all

取代工会