19

我正在尝试获取留下此评论的用户的用户信息。

使用以下代码:

SELECT username, image, user_id FROM table_users AS us
JOIN table_reviews AS re
ON re.user_id = us.user_id
WHERE us.user_id = 1 AND
re.review_id= 1

我得到错误:

字段列表中的列“user_id”不明确

这是什么意思?

4

5 回答 5

37

这意味着查询中的两个表都有列user_id

您需要在 SELECT 语句中指定要获取哪一个,例如 SELECT username, image, re.user_id

于 2013-09-28T16:17:14.133 回答
6

列 user_id 在两个 表中table_reviewstable_users

您还需要指定具有表别名的列。

SELECT username, image, us.user_id FROM table_users AS us
JOIN table_reviews AS re
ON re.user_id = us.user_id
WHERE us.user_id = 1 AND
re.review_id= 1
于 2013-09-28T16:17:13.383 回答
5

这意味着列 user_id 在两个表中,即在table_reviews, table_users

试试这样:

SELECT username, image, us.user_id    //or re.user_id
FROM table_users AS us
JOIN table_reviews AS re
ON re.user_id = us.user_id
WHERE us.user_id = 1 AND
re.review_id= 1
于 2013-09-28T16:17:38.143 回答
0

不仅在 where 子句(WHERE us.user_id = 1)中检查所选值(SELECT username, image, user_id),而且在 where 子句中检查所有连接列,因此在您的示例中,两个连接表中都有 user_id 列。如果您有这样的查询:

SELECT table_reviews.id FROM table_users AS us
JOIN table_reviews AS re
ON re.user_id = us.user_id
WHERE id

id 将是模棱两可的,因为来自 table_reviews 和 table_reviews 的 id-s 将在 where 子句中检查,尽管只选择了来自 table_reviews 的 id。

于 2017-03-02T11:36:39.537 回答
0

这是因为user_id两个表中都存在字段。您需要指定user_id您想要的表。

SELECT username, image, re.user_id
于 2020-10-09T16:41:30.157 回答