-6

所以我想做的是在两个条件下从某个表中选择所有列

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

我试图搜索正确的语法,但是我没有找到与我的语法不同的语法

任何建议

提前致谢

编辑|

请注意,我没有不同的表,它是同一张表。这使得这个问题与网上看起来相似的问题不同

所以是的,我在询问之前确实在线检查过,似乎没有类似于我的问题

4

3 回答 3

1
"SELECT * FROM table_name where r_id = $user_id AND time = (SELECT MAX(time) FROM table_name where r_id = $user_id) "
于 2013-10-04T18:15:04.897 回答
1

语法错误总是最容易发现的,因为 MySQL 总是会准确地告诉你它失败的地方。在您的情况下,它是“SELECT MAX(时间)”。

你不能说“WHERE col_name = SELECT ...”。您必须将其设为子查询:

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

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

于 2013-10-04T18:16:39.293 回答
0

子查询应该用括号括起来。以下查询在语法上是正确的:

SELECT * FROM table_name WHERE r_id = $user_id AND time = (SELECT MAX(time) FROM table_name WHERE r_id = $user_id)
于 2013-10-04T18:13:16.760 回答