首页 > 解决方案 > 连接表后如何使用where子句?

问题描述

我有两张桌子:

// refueling_data 
+----------+---------+
| distanse | user_id | 
+----------+---------+
|  61000   |    1    |
|  60000   |    1    | 
|  60000   |    3    |
+----------+---------+

// user
+----------+-----------+
| user_id  | username  |
+----------+-----------+
|    1     |   admin   |
|    3     |   user1   |
+----------+-----------+

两个表都有更多的列,这个主体不需要显示其他数据。此外,当我尝试将表 refueling_data 中存在的 WHERE 子句列放入时,一切正常。但是,如果我使用仅存在于用户表中的列,则不起作用。

这是我的查询:

SELECT * FROM (SELECT distance, username FROM refueling_data LEFT JOIN user ON refueling_data.user_id=user.user_id) AS tab WHERE tab.username =admin;

执行查询后出现错误:错误代码:1054。“where 子句”中的未知列“admin”

我想实现的表:

// tab
+-----------+-----------+
| username  | distance  |
+-----------+-----------+
|  admin    |   60000   |
|  admin    |   61000   |
+-----------+-----------+

请就我犯的错误给我建议

标签: mysql

解决方案


不需要子查询,因为 admin 是一个字符串,你需要用单引号括起来,'admin'

SELECT username, distance
FROM refueling_data r
JOIN user u ON r.user_id = u.user_id
WHERE u.username = 'admin'
ORDER BY distance ASC -- if you want to sort on distance

推荐阅读