2011-12-12 251 views
0

我加入使用SQL UNION運算符將兩個SQL查詢SQL UNION沒有顯示第2個結果集的結果,如果第一個結果集是空的

例子:

$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,如果第一個查詢的結果集不爲空,它將顯示兩個查詢的結果。如果第一個查詢具有空的結果集,即使第二個查詢在數據庫中有一些值,也不會顯示結果。

有人可以解釋問題出在哪裏。

注意:不建議我使用單個查詢,我有理由使用兩個查詢。

回答

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秒)

適合我的工作。您發佈的查詢與執行的查詢不同,或者您的代碼存在問題。

0

使用

union all 

代替聯合的

+0

聯合所有與處理重複項有關。與他的問題有什麼關係? –