更新:
从那以后,我意识到我这样做的方式不是最理想的,并且永远无法正常工作,现在我使用两个表而不是三个,这似乎有效。
如果您有解决方案,欢迎您回答,但如果他们有类似的问题,只能帮助其他人。
我有一个包含 uid、名称和基本信息的用户表。我有一个带有 sid、设置名称和设置默认值的设置表。
我还有一个包含 sid、uid 和值的 users_settings 表,将用户的设置链接到设置的名称和用户的名称。
在一个查询中,我将如何选择一个用户,并“循环”通过设置表,为每个设置选择 users_settings 中的用户设置(如果存在),或者该设置的默认值(如果不存在)?
每个设置最好在结果集中显示为一列(列的名称是设置的名称,值是设置的值)。
如果这是难以理解的,这里有一个例子:
用户表:
uid name email
1 Maria maria@example.com
4 George george@example.com
设置表:
sid name default_value
1 uicolour #f00
2 language en
users_settings 表:
uid sid value
4 1 #000
1 2 es
MySQL 查询 uid 4 的期望结果:
uid name email setting_colour setting_language
4 George george@example.com #000 en
MySQL 查询 uid 1 的所需结果:
uid name email setting_colour setting_language
1 Maria maria@example.com #f00 es