SQL查询:合并两个表中的数据

转售

我有两个表:USERSUSER_TOKENS

USERS 的结构如下:

id (INT)
name (VARCHAR)
pass (VARCHAR)
birthdate (DATETIME)
...
etc

USER_TOKENS 的结构如下:

user_id (INT)
key     (VARCHAR) 
value   (VARCHAR)

本质上USERS包含基本数据,而USER_TOKENS用于存储给定用户的完全任意的KEY / VALUE对。因此,例如对于USER,可能有3条记录,其ID为137:

user_id:137;   key:"height";    value:"610";
user_id:137;   key:"food";      value:"candy";
user_id:137;   key:"income";    value:"low";

现在,要点:如何查询数据库以从USERwhere的获取所有记录USER.name = 'bob',但同时USER_TOKENS为每个选定用户中的所有记录呢?

Vojtech多纳尔

如果您确实需要所有匹配的用户及其各自的令牌作为一个结果集,则可以尝试以下操作:

SELECT u.id, ut.key, ut.value  -- and list also other required fields
FROM Users u 
LEFT JOIN User_tokens ut ON u.id = ut.user_id 
WHERE u.name = 'bob'

尽量不要使用SELECT *,因为你得到的方式(你会看到两个重复的字段users.iduser_tokens.user_id它们是百达相等)。使用LEFT JOIN,您还将获得没有令牌的用户。

但是此查询对我而言意义不大,因为您已经知道用户,所以为什么要在每一行中重复用户的数据。(只有在有更多名为“ bob”的用户时才有意义)。

您可能需要这样的东西:

SELECT ut.key, ut.value  
FROM Users u 
INNER JOIN User_tokens ut ON u.id = ut.user_id 
WHERE u.name = 'bob'

也许更好:

SELECT ut.key, ut.value  
FROM User_tokens ut 
WHERE EXISTS (SELECT * FROM Users u WHERE u.name = 'bob' AND u.id = ut.user_id)

这将列出名称为“ bob”的所有用户的所有令牌。

如果只有一个,bob则无需包含users表中的所有重复数据-您最终可以使用单独的SELECT最终将其返回一行。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SQL查询:合并两个表中的数据

来自分类Dev

sql查询合并两个表中的数据

来自分类Dev

SQL Server:合并两个表中的数据

来自分类Dev

在一个SQL查询中合并(合并)来自两个表的两列

来自分类Dev

在SQL中合并两个查询

来自分类Dev

SQL查询,如何从两个表中获取数据

来自分类Dev

合并两个SELECT查询并在一个表中显示数据?

来自分类Dev

合并两个SELECT查询并在一个表中显示数据?

来自分类Dev

在一个SQL查询中合并两个表中的两列,并合并COUNT和SUM值

来自分类Dev

两个表中的SQL查询

来自分类Dev

合并两个查询以获取SQL中的合并值

来自分类Dev

在一个SQL查询中合并两个表,并使日期值唯一

来自分类Dev

将两个 SQL 查询合并到一个整洁的表中

来自分类Dev

SQL查询合并两个表的结果

来自分类Dev

将两个表中的数据合并到一个输出SQL中

来自分类Dev

合并查询中的两个分析表

来自分类Dev

如何在查询中合并两个表?

来自分类Dev

合并Rails中两个表中的数据

来自分类Dev

MySQL查询 合并两个表

来自分类Dev

MySQL查询 合并两个表

来自分类Dev

连接查询以合并两个表

来自分类Dev

SQL:合并两个SQL查询

来自分类Dev

SQL查询将具有相同列名的两个表合并到一个表中

来自分类Dev

如何合并两个表中的数据

来自分类Dev

Microsoft Sync Framework:合并两个表中的数据

来自分类Dev

合并Hive中的两个表与数据验证

来自分类Dev

Laravel:合并两个表中的数据

来自分类Dev

如何将两个 SQL 表的数据合并到一个新的 SQL 表中?

来自分类Dev

在PL / SQL块中合并两个表