一个查询中的多个mysql'select from'

w00*_*00t 1 mysql

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) 的引用。具体可以在手册中找到。