2013-10-04 39 views
-6

所以我試圖做的是選擇兩個條件下,從某一個表中的所有列選擇MAX值

1 ID通過我的變量$ USER_ID等於值保持

SELECT * FROM table_name where r_id = $user_id 

2欄中的時間是自prvoius聲明的選擇中最大將返回多條記錄*

*注意R_ID只是一個列名這是不是ID

所以,現在我的查詢是以下

$result = mysql_query("SELECT * FROM table_name where r_id = $user_id AND time = SELECT MAX(time) FROM table_name where r_id = $user_id ",$con) or die ('Error: '.mysql_error()); 

但是我得到這個錯誤

Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT MAX(time) FROM table_name where r_id = 1' at line 1 

我試圖尋找正確的語法,但是我並沒有比我

找到不同的語法任何建議

在此先感謝

編輯|

請注意,我沒有不同的表格,它是相同的表格。 這使得從問題的不同這個問題,看起來類似的在線

所以,是的,我沒有在網上問前檢查,它似乎並不認爲有類似我的問題

+2

'我沒有發現不同於我的語法... [RTFM](http://dev.mysql.com/doc/refman/5.1/en/subqueries.html)@ mysql.com – BlitZ

+0

@CORRUPT I在詢問甚至複製工作代碼之前,當然做了RTFM。但是再沒有什麼 –

+0

你在爲此使用'mysqli'或者糟糕的'mysql_query'界面嗎? – tadman

回答

1
"SELECT * FROM table_name where r_id = $user_id AND time = (SELECT MAX(time) FROM table_name where r_id = $user_id) " 
+0

作品完美謝謝:) –

+0

@ Abdel-RahmanShoman不客氣 – falinsky

0

子查詢應該被包圍的東西括號。下面的查詢語法正確:

SELECT * FROM table_name WHERE r_id = $user_id AND time = (SELECT MAX(time) FROM table_name WHERE r_id = $user_id) 
+0

這是一個子查詢。 – BlitZ

+0

我在第二期看到。編輯我的回覆。 –

1

的語法錯誤是總是發現最簡單的,因爲MySQL的總是顯示你究竟在何處失敗。你的情況是「選擇最大(時間)」。

你不能說「WHERE col_name = SELECT ...」。你必須做一個子查詢:

SELECT bla bla bla 
WHERE col_name = (
    SELECT bla bla FROM table name bla boa 
) 
WHERE bla bla 

這仍然不是一個好的設計,即使它會通過語法檢查。您需要了解連接並在適當時使用它們。