【问题标题】:mysql - Unknown Column In Where Clausemysql - Where 子句中的未知列
【发布时间】:2018-04-01 13:03:10
【问题描述】:

以下Sql查询抛出错误

1054 - “where 子句”中的未知列“registered_user_detail.user_id”

查询:

SELECT
  `user_feedback`.`user_id`,
  `user_feedback`.`feedback_status`,
  `registered_user_detail`.`user_id`
FROM
  `user_feedback`,
  `registered_user_detail`
WHERE
  `registered_user_detail.user_id` = `user_feedback.user_id` AND `user_feedback.feedback_status` = 1
ORDER BY
  `user_feedback.feedback_id`
DESC

我有“user_feedback”表和“registered_user_detail”表;还有两个表中的“user_id”列。那么怎么回事呢。

【问题讨论】:

  • 您的查询将表和字段指定为`user_feedback.user_id`,它应该是`user_feedback`.`user_id`(所有其他表和字段都相同)
  • @Da 我是怎么犯这种错误的??然而,许多人感谢达米尔·卡西波维奇

标签: php mysql sql database


【解决方案1】:

你漏掉了where子句中的标点符号,正确用法是:(punchmark)tablename(punchmark).(punchmark)columnname(punchmark)。请试试这个:

选择 user_feedback.user_id, user_feedback.feedback_status, registered_user_detail.user_iduser_feedback, registered_user_detail 在哪里 registered_user_detail.user_id = user_feedback.user_iduser_feedback.feedback_status = 1 订购方式 user_feedback.feedback_id DESC

【讨论】:

  • 感谢您的出色回答。查询运行良好,但请告诉我,您的查询与我的查询有什么区别,bcoz 看起来都一样。我的查询有什么问题?
  • 在您的查询中,您错误地使用了标点符号。在 WHERE 条件之后,您必须使用打孔标记作为 (punchmark)registered_user_detail(punchmark).(punchmark)user_id(punchmark)。但是你做了 (punchmark)registered_user_detail.user_id(punchmark)。那是您查询中的错误。
【解决方案2】:

使用正确的JOIN 和一致的反引号。

SELECT u.user_id, u.feedback_status, r.user_id
FROM user_feedback u
INNER JOIN registered_user_detail r ON u.user_id = r.user_id
WHERE u.feedback_status = 1
ORDER BY u.feedback_id DESC

【讨论】:

  • 或者,更好的是,根本没有反引号 - 就像上面的例子一样
  • 嗨,马特,感谢您的回复,您的查询就像“rockzzzz”一样运行。请解释一下为什么我的查询没有执行,这也是一个加入。
猜你喜欢
  • 2021-09-19
  • 2017-06-05
  • 1970-01-01
  • 2012-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多