SELECT (SELECT user_id FROM users WHERE user_id=1) AS user_id, (SELECT usersetting_user_id FROM usersettings WHERE usersetting_user_id=1) AS usersetting_user_id;
这将返回:
| user_id | usersetting_user_id |
| 1 | 1 |
Run Code Online (Sandbox Code Playgroud)
但我想显示所有用户,而不仅仅是一个。所以我运行以下命令:
SELECT (SELECT user_id FROM users) AS user_id, (SELECT usersetting_user_id FROM usersettings) AS usersetting_user_id;``
并得到:
ERROR 1242 (21000): Subquery returns more than 1 row
Run Code Online (Sandbox Code Playgroud)
知道如何规避这个吗?
小智 5
你应该使用一个join
语句,像这样:
SELECT u.user_id, us.usersetting_user_id
FROM users u
JOIN usersettings us ON u.user_id = us.usersetting_user_id
Run Code Online (Sandbox Code Playgroud)
这假设 usersettings.usersetting_user_id 是对用户主键 (user_id) 的引用。具体可以在手册中找到。