2015-12-21 22 views
0

我想訂購的日期時間查詢(最新第一),但它似乎是回到完全無序,這裏是查詢:mysql按日期時間順序不工作?

$sql = "SELECT * FROM my_table WHERE (some_value = '$id' OR some_value Like '%$id_multi%') ORDER BY (UNIX_TIMESTAMP(created_datetime)) DESC"; 
$result = mysql_query($sql) 

的「OR」的條款肯定是什麼原因造成的錯誤排序,因爲我使用相同的查詢其他地方沒有一個OR子句返回完美排序。我嘗試過以各種方式改變查詢,但沒有得到任何結果。有沒有更好的方法來解決這個問題?任何幫助是極大的讚賞

編輯

$ id爲整數,且$ id_multi是即

$id = 25; 
$id_multi = "," . $id . ","; 

一個逗號分隔的整數爲例條目的SOME_VALUE列可能是:,12,25,13,

+0

你在'id_multi'參數傳遞?並且還用示例輸入輸出數據 –

+0

來解釋基本上它$ id_multi =「,」。 $ id。 「,」換句話說,即時查詢where_value = $ id或包含$ id。 –

+0

我適合用逗號分隔的ID列表,然後你可以使用FIND_IN_SET()函數,而不是使用或運算符 –

回答

-1

嘗試以下內容

$sql = "SELECT * FROM my_table WHERE some_value = '$id' OR some_value in '(%$id_multi%)' ORDER BY created_datetime DESC"; 
$result = mysql_query($sql) 

如果還不能正常工作,請告訴created_datetime

的數據類型還提供了echo $sql;

您的問題輸出其實很簡單。爲了工作查詢它應該是類似

SELECT * FROM my_table WHERE some_value = '7' OR some_value in (21,34,51) ORDER BY created_datetime DESC 

代替變量後。如果你避免了(,)你會得到語法錯誤。我希望你現在得到了你的問題。

爲了檢查這個錯誤,我要求輸出echo $sql。如果你提供我給你確切的語法錯誤

你的問題是你不及格in '(%$id_multi%)'正確,值替換後,應該像(12,13,65)

+0

沒有這是我原來的抱歉,括號是作爲我試圖找出它的一部分,數據類型是datetime –

+0

@ justin岸 - 請提供輸出echo $ sql; – programmer

+0

id是一個整數,multi id是逗號分隔的整數,分別是25和25,分別是 –

0

檢查FIND_IN_SET()功能。

試試這個:

SELECT * 
FROM my_table 
WHERE FIND_IN_SET('$id', some_value) 
ORDER BY created_datetime DESC 
+0

這隻返回some_value ='$ id' –

+0

這些條目返回所有這些,但遺憾的是仍然沒有排序。 –

+0

@justinshores什麼是created_datetime列的數據類型。 –