2013-10-04 67 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 

这仍然不是一个好的设计,即使它会通过语法检查。您需要了解连接并在适当时使用它们。