2010-03-12 89 views
2

我有兩個MySQL查詢:排序MySQL查詢

$sql = "SELECT * FROM content WHERE threadName LIKE '%$filter%' ORDER BY lastUpdated desc"; 

$sql = "SELECT * FROM content ORDER BY lastUpdated desc"; 

最終的結果是讓所有的行從一個特定的表「內容」返回,但有那些匹配頂部的變量$ filter。有沒有可能結合這兩個單個查詢或我應該使用JOIN?

............仍然沒有運氣。這是我目前有:

$sql = "SELECT * FROM content WHERE threadName LIKE '%$filter%' ORDER BY lastUpdated desc UNION SELECT * FROM content WHERE threadName NOT LIKE '%$filter%' ORDER BY lastUpdated desc"; 

這給:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/andrew/public_html/PHP/threadDisplay.php on line 20 

雖然單獨使用時,第一部分(前盟)的作品。

回答

1

如何使用CASE STATEMENT

喜歡的東西

SELECT * 
FROM content 
ORDER BY CASE 
      WHEN threadName LIKE '%$filter%' THEN 0 
      ELSE 1 
     END ASC, 
     lastUpdated desc 
1
(SELECT * 
FROM content 
WHERE threadName LIKE '%$filter%') 
UNION 
(SELECT * 
FROM content 
WHERE threadName NOT LIKE '%$filter%') 
ORDER BY lastUpdated desc 

編輯MySQL需要一些包圍,並要求工會後做的順序,對不起忘了這一點。

+0

我很害怕這個至今,看看我上面更新的代碼。 – kalpaitch 2010-03-13 13:59:49

+0

請參閱編輯。 – AxelEckenberger 2010-03-13 14:50:55