mysql - SQL 连接 - 从 RIGHT 表中收集所有信息

标签 mysql

我有两个表:

用户数据:

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/

相关文章:

mysql - mysql中的求和查询,带有减法和连接

PHP MySQL : explode and JOIN Combination

mysql - 连接多个 MySQL 列和行

php - PHP 中的 MYSQL 查询匹配日期范围的记录

mysql - 在mysql中用另一个字符串替换一个字符串

MySQL 我怎样才能加快这个 SELECT 查询?

MySqlCommand 字符串变量参数不起作用

Mysql - "group by group_concat()"的可能解决方案?

mysql - 第 1 行 : No database selected 处的错误 1046 (3D000)

MySQL INSERT 与 OUTPUT 类似 MSSQL