我有两个表:
用户数据
:
id | userID | keyID | val
1 99 1 1
用户数据 key
id | key
1 is-staff
2 description
3 image
现在,当我运行以下 SQL 时,我得到了所需的输出:
SELECT `key`,`val` FROM `user-data` RIGHT JOIN `user-data-keys` ON `user-data`.`keyID` = `user-data-keys`.`id`;
产生:
key | val
is-staff 1
description NULL
image NULL
这正是我想要的。但是,当我向 SQL 添加 WHERE 子句时:
SELECT `key`,`val` FROM `user-data` RIGHT JOIN `user-data-keys` ON `user-data`.`keyID` = `user-data-keys`.`id` WHERE `userID` = 99;
我只得到其中包含 is-staff
的一行。据我所知,因为我只要求包含 userID = 99
的行。但是,我计划在一个 user-data
表中存储大量不同用户的信息,并且我想知道它们是否为每个键设置了 NULL 值。那么我该如何实现呢?我知道这一定是某种我不知道的奇特连接。
所以澄清一下:我需要这样的输出:
key | val
is-staff 1
description NULL
image NULL
当使用 WHERE userID = 99
时。目前我在使用 WHERE
子句时只能得到一行。
最佳答案
将谓词从 WHERE 子句移动到连接:
SELECT `key`,`val` FROM `user-data` RIGHT JOIN `user-data-keys` ON `user-data`.`keyID` = `user-data-keys`.`id` and `userID` = 99;
关于mysql - SQL 连接 - 从 RIGHT 表中收集所有信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36717390/