2012-06-20 79 views
0

我有這個mysql查詢。mysql部分查詢兩部分,命令顯示第一部分的結果,第一部分

任何想法如何排序結果,以便從查詢的第一部分開始,然後從查詢的第二部分開始。

下面是我如何做,但它不能正常工作,將結果混合在一起。

SELECT name, pic0, bio,site 
FROM ".$table." 
WHERE ((name LIKE '%john%' OR name LIKE '%smith%') AND site LIKE ('%site1%')) 
    OR (name IS NOT NULL AND category IN ('drivers', 'construction') AND site LIKE ('%site1%')) 
ORDER BY ((name LIKE '%john%' OR name LIKE '%smith%') AND site LIKE ('%site1%')) DESC 
LIMIT ".$offset.", ".$rowsperpage.""); 

謝謝

+0

您的意思是第一部分和第二部分?你的意思是在哪裏? –

回答

0

一分爲二的查詢和UNION他們

聯盟在MySQL查詢:http://dev.mysql.com/doc/refman/5.0/en/union.html

您的查詢應該是這個樣子,雖然我沒有測試它:

(SELECT name, pic0, bio,site 
FROM ".$table." 
WHERE ((name LIKE '%john%' OR name LIKE '%smith%') AND site LIKE ('%site1%')) 
ORDER BY ((name LIKE '%john%' OR name LIKE '%smith%') AND site LIKE ('%site1%')) DESC) 
UNION 
(SELECT name, pic0, bio,site 
FROM ".$table." 
WHERE (name IS NOT NULL AND category IN ('drivers', 'construction') AND site LIKE ('%site1%')) 
ORDER BY ((name LIKE '%john%' OR name LIKE '%smith%') AND site LIKE ('%site1%')) DESC) 
+0

以前從來沒有和工會合作過,請問我能舉一個例子,我有點像一個nube,它會爲我節省幾個小時的試驗和錯誤。如果你沒有時間,我明白。 – webmasters

+0

如果您有兩個查詢返回相同的列,則可以將這兩個查詢的兩個結果「輸出」爲一個結果。例如:'(SELECT COL1,COL2 FROM TABLE1 WHERE COL1 = 1000)UNION(SELECT COL1,COL2 FROM TABLE1 WHERE COL2 = 1110)' –

+0

非常有趣,這非常有趣。但是重複行呢?例如,名爲john的驅動程序的生物特徵將顯示在第一個查詢中,但也顯示在第二個查詢中。 – webmasters

0

如果通過查詢的第一部分您的意思是第一個WHERE-條件,應該在您現有的ORDER BY條款之後添加DESC即可。

由於它使用與第一個條件相同的邏輯,因此對於其中第一個條件爲true的行將爲1,其餘爲0

按降序排序應該從第一個條件開始。

+0

不確定你的意思,但我有一個DESC。 Ty非常感謝 – webmasters

+0

對不起,您的查詢格式(現在已修復)感到困惑。你的查詢應該實際上工作,然後,這裏是一個[簡單的例子](http://sqlfiddle.com/#!2/85575/1)我把SQL小提琴放在一起... –

+0

它的工作部分,例如我有18暱稱,其中包含約翰(約翰史密斯,約翰亞當斯),其次是2,其中不包括更多的包含它們。很奇怪 – webmasters

相關問題