SQL查询两个表并合并结果(略有不同)

ThePloki

我有两个表:usersusers_info

users 看起来像这样:

+----+----------+-------+
| id | slug     | name  |
+----+----------+-------+
|  1 | theploki | Kris  |
+----+----------+-------+

users_info看起来像这样:

+----+--------+----------+---------------+
| id | parent | info_key | info_val      |
+----+--------+----------+---------------+
|  1 | 1      | email    | [email protected] |
+----+--------+----------+---------------+
|  2 | 1      | age      | 28            |
+----+--------+----------+---------------+

我想SELECT一个user谁拥有user_info电子邮件=“[email protected]
-和-
返回所有user_info结果具有匹配users_info.parent = user.id
-和-
以可读的格式(如result['email'] = '[email protected]'result['id'] = 1result['name'] = 'Kris'result['age'] = 28

我确定这已在另一个问题中得到了解答,但我一直在搜索和阅读对我而言并不完全有效的答案。

显然,我确保info_keys不能匹配users列名。

我试过内联接,外联接,只是普通联接,而我试过根本没有任何联接。

这不起作用,但是有点解释了我想做什么:

SELECT * FROM users
WHERE 1=1
AND users.slug='theploki'
AND (SELECT * FROM users_info
    WHERE users_info.parent = users.id
    AND 1=1
    AND users_info.info_key = 'email'
    AND users_info.info_val = '[email protected]'
    GROUP BY users_info.parent)
GROUP BY users.id

有时我不会搜索信息列,有时我不会搜索用户列,这就是为什么我把 1=1

也许执行两个查询然后将它们组合起来会更简单?

更新:

OK,这是更新的SQL查询(由scaisEdge提供):

SELECT users.*, users_info.* FROM users
INNER JOIN users_info on users_info.parent = users.id
where users.id = (SELECT users_info.parent FROM users_info
    WHERE users_info.parent = users.id
    AND users_info.info_val = '[email protected]')

这非常接近,但是返回如下结果集:

+----+----------+-------+----+--------+----------+---------------+
| id | slug     | name  | id | parent | info_key | info_val      |
+----+----------+-------+----+--------+----------+---------------+
|  1 | theploki | Kris  |  1 |  1     | email    | [email protected] |
+----+----------+-------+----+--------+----------+---------------+
|  1 | theploki | Kris  |  2 |  1     | age      | 28            |
+----+----------+-------+----+--------+----------+---------------+

但我想要这样的结果集:

+----+----------+-------+---------------+-----+
| id | slug     | name  | email         | age |
+----+----------+-------+---------------+-----+
|  1 | theploki | Kris  | [email protected] | 28  |
+----+----------+-------+---------------+-----+
scaisEdge

与同一父用户相同的用户应该是

SELECT users.*, users_info.* FROM users
INNER JOIN users_info on users_info.parent_id = users.id
where users.id = (SELECT users_info.parent FROM users_info
    WHERE users_info.parent = users.id
    AND users_info.info_val = '[email protected]')

仅作为示例,您可以使用列名和别名更改user。* ord users_info。*

SELECT users.slug,  users.name as name, group_concat(users_info.info_val) FROM users
INNER JOIN users_info on users_info.parent_id = users.id
where users.id = (SELECT users_info.parent FROM users_info
    WHERE users_info.parent = users.id
    AND users_info.info_val = '[email protected]')
 group by users.name

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Ruby如何合并标题略有不同的两个CSV文件

来自分类Dev

如何比较两个表与一列在PowerShell中略有不同的列?

来自分类Dev

查询两个相似的表并合并排序结果

来自分类Dev

对齐两个极其相似但略有不同的视频

来自分类Dev

当列结果略有不同时,SQL(Oracle)连接

来自分类Dev

合并具有不同结构的两个表的结果

来自分类Dev

SQL查询合并两个表的结果

来自分类Dev

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

来自分类Dev

如何为同一类别但英寸略有不同的布局定义两个不同的布局?

来自分类Dev

即使一个图像的裁剪/比率略有不同,我如何检测到两个图像“相同”?

来自分类Dev

如果没有过滤选项,如何编写一个sql显示基于过滤器的数量结果并合并两个不同的列?

来自分类Dev

SQL查询以合并两个具有不同时间戳的表作为索引

来自分类Dev

SQL查询以合并两个具有不同时间戳的表作为索引

来自分类Dev

如何在MySQL中将具有不同列的两个SQL查询合并而不合并其结果行

来自分类Dev

SQL:合并两个不同的查询

来自分类Dev

如何从一个表中合并两个不同查询的结果

来自分类Dev

带有两个不同表的 t/sql 查询

来自分类Dev

如何使用Scrapy解析源代码的两个不同部分并合并结果?

来自分类Dev

对两个表的SQL不同查询

来自分类Dev

将两个略有不同的JSON字符串(相同的结构,不同的名称)反序列化为同一类

来自分类Dev

PHP从两个表收集并合并不同的数据

来自分类Dev

无法在csv文件中写入结果略有不同

来自分类Dev

TensorFlow计算结果略有不同

来自分类Dev

使用c ++中的两个略有不同的头文件(尽管是一个.lib文件)会导致很多错误,但未生成警告。怎么预防呢?

来自分类Dev

合并MYSQL中两个不同表的结果

来自分类Dev

选择出现两次的记录,略有不同

来自分类Dev

T-SQL-如何将两个表的结果与两个不同的WHERE子句合并

来自分类Dev

MySQL从2个不同的表中选择并合并结果

来自分类Dev

合并两个表,并按比例交错两个表的选择查询结果

Related 相关文章

  1. 1

    Ruby如何合并标题略有不同的两个CSV文件

  2. 2

    如何比较两个表与一列在PowerShell中略有不同的列?

  3. 3

    查询两个相似的表并合并排序结果

  4. 4

    对齐两个极其相似但略有不同的视频

  5. 5

    当列结果略有不同时,SQL(Oracle)连接

  6. 6

    合并具有不同结构的两个表的结果

  7. 7

    SQL查询合并两个表的结果

  8. 8

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

  9. 9

    如何为同一类别但英寸略有不同的布局定义两个不同的布局?

  10. 10

    即使一个图像的裁剪/比率略有不同,我如何检测到两个图像“相同”?

  11. 11

    如果没有过滤选项,如何编写一个sql显示基于过滤器的数量结果并合并两个不同的列?

  12. 12

    SQL查询以合并两个具有不同时间戳的表作为索引

  13. 13

    SQL查询以合并两个具有不同时间戳的表作为索引

  14. 14

    如何在MySQL中将具有不同列的两个SQL查询合并而不合并其结果行

  15. 15

    SQL:合并两个不同的查询

  16. 16

    如何从一个表中合并两个不同查询的结果

  17. 17

    带有两个不同表的 t/sql 查询

  18. 18

    如何使用Scrapy解析源代码的两个不同部分并合并结果?

  19. 19

    对两个表的SQL不同查询

  20. 20

    将两个略有不同的JSON字符串(相同的结构,不同的名称)反序列化为同一类

  21. 21

    PHP从两个表收集并合并不同的数据

  22. 22

    无法在csv文件中写入结果略有不同

  23. 23

    TensorFlow计算结果略有不同

  24. 24

    使用c ++中的两个略有不同的头文件(尽管是一个.lib文件)会导致很多错误,但未生成警告。怎么预防呢?

  25. 25

    合并MYSQL中两个不同表的结果

  26. 26

    选择出现两次的记录,略有不同

  27. 27

    T-SQL-如何将两个表的结果与两个不同的WHERE子句合并

  28. 28

    MySQL从2个不同的表中选择并合并结果

  29. 29

    合并两个表,并按比例交错两个表的选择查询结果

热门标签

归档