我有两个表:
// 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 |
+-----------+-----------+
请给我有关我犯了什么错误的建议
答案 0 :(得分:2)
不需要子查询,并且由于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