【问题标题】:Select MAX value in php SQL [closed]在php SQL中选择MAX值[关闭]
【发布时间】:2013-10-11 20:23:29
【问题描述】:

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

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

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

任何建议

提前致谢

编辑|

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

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

【问题讨论】:

  • I did not find different syntax than mine ... RTFM@mysql.com
  • @CORRUPT 在询问甚至从工作代码中复制之前,我当然做了 RTFM。但又什么都没有
  • 你使用的是mysqli还是糟糕的mysql_query接口?

标签: php mysql database mysqli syntax-error


【解决方案1】:

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

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

【讨论】:

  • 我在第二次看时看到了这一点。编辑我的回复。
【解决方案2】:
"SELECT * FROM table_name where r_id = $user_id AND time = (SELECT MAX(time) FROM table_name where r_id = $user_id) "

【讨论】:

  • 工作完美,谢谢:)
  • @Abdel-RahmanShoman 不客气
【解决方案3】:

语法错误总是最容易发现的,因为 MySQL 总是会准确地告诉你哪里出错了。在您的情况下,它是“SELECT MAX(time)”。

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

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

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

【讨论】:

    猜你喜欢
    • 2014-04-14
    • 1970-01-01
    • 2021-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多