2011-12-20 78 views
0

您可以檢查此mysql查詢,也許可以幫助解決它有什麼問題嗎?統計聯合子查詢的計數查詢中的Mysql錯誤

當我運行它通過MySQL作爲我的主人,我得到這個錯誤:

#1248 - 每一個派生表必須有它自己的別名

下面是代碼:

mysql_query(" 
SELECT COUNT(*) 
FROM 
(

(SELECT 1 as sort_col,id,pic0 FROM `cronjob_reloaded` WHERE id IS NOT NULL AND id LIKE '%car%') 

UNION 

(SELECT 2 as sort_col,id,pic0 FROM `cronjob_reloaded` WHERE id IS NOT NULL AND category IN ('bmw')) 

ORDER BY sort_col 

) 
") 
Tyler!

Ty!

PS。前段時間我發佈了一個不清楚的問題,請問管理員可以刪除那個嗎?抱歉給您帶來不便。問題是here

+0

作爲錯誤說添加別名如此糟糕的mysql不會弄糊塗你正在參考哪個表。 – 2011-12-20 19:37:22

+0

[Count mysql union type query]可能重複(http://stackoverflow.com/questions/8580039/count-mysql-union-type-query) – ruakh 2011-12-20 19:37:59

+0

是的,我問過一個管理員可以刪除那個,不清楚 – webmasters 2011-12-20 19:38:42

回答

2

正如錯誤所述,派生表必須是別名。

SELECT COUNT(*) 
FROM 
(

(SELECT 1 as sort_col,id,pic0 FROM `cronjob_reloaded` WHERE id IS NOT NULL AND id LIKE '%car%') 

UNION 

(SELECT 2 as sort_col,id,pic0 FROM `cronjob_reloaded` WHERE id IS NOT NULL AND category IN ('bmw')) 

ORDER BY sort_col 

) q /* I added the alias "q" */ 
+0

你的第二個版本並不完全等同於OP的。注意'SELECT 1'和'2'。他真的在做一個'UNION ALL'。 – 2011-12-20 19:56:14

+0

@ypercube:好點。我會解決這個問題。 – 2011-12-20 19:59:30