我正在尝试 Build 一个连接,但我不能让它在MySQL中工作,我知道必须有一种方法 .
我有两个表: 1. Setting 和 2. User_Setting (当然 User 但这里不需要) .
Structure
Setting.setting_id
Setting.description
Setting.value_type
Setting.default_value
User_Setting.user_id
User_Setting.setting_id
User_Setting.value
我想选择所有 Setting
记录,并在有值的情况下加入 User_Setting
. 我相信经典的外部联接?
我有这个问题:
SELECT
`User_Setting`.`user_id`,
`User_Setting`.`value`,
`Setting`.`setting_id`,
`Setting`.`default_value`,
`Setting`.`value_type`,
FROM
`User_Setting`
Right Join `Setting` ON `User_Setting`.`setting_id` = `Setting`.`setting_id`
WHERE
`User_Setting`.`user_id` IS NULL OR
`User_Setting`.`user_id` = 1;
但是如果带有 user_id
的 User
具有某个 setting_id
的 User_Setting
记录,则这不起作用,但 User
与 user_id
1没有存储 setting_id
记录...
Does anybody have a query where ALL settings will be retrieved, with user_id and value NULL if the User_Setting record doesn't exist?
2 回答
这个(如果你想检查用户是否存在)
或者这个(如果你不想检查用户是否存在):
我通常在
WHERE
子句中添加一个条件来检查正在连接的表中的主要if是否为空 .