gpt4 book ai didi

mysql - 如何将 Select 和 Join select 连接到单个查询中

转载 作者:行者123 更新时间:2023-11-29 13:46:37 26 4
gpt4 key购买 nike

我的查询中有 2 个选择语句、一个聚合计数和一个左联接,它组合了 2 个表以提供一些我无法通过其他方式访问的信息。我知道我可以创建一个临时表作为这两个查询,然后将它们连接到一个公共(public)行上,在本例中就是用户 ID。我只是想知道是否有一种方法可以在一个查询中完成此操作。

我的查询如下:

SELECT usr, COUNT( quiz_id )
AS count
FROM edo_plugin_slickquiz_scores
WHERE usr_practice = 123456
GROUP BY usr;

给我以下内容

USR    COUNT 
6 1
7 1

我的第二个查询

SELECT a.user_id, a.meta_value, b.user_nicename
FROM edo_usermeta a LEFT JOIN edo_users b
ON a.user_id = b.id
WHERE a.meta_key = 'user_practice_role';

给我以下内容

User_id  meta_value   user_nicename
-----------------------------------
6 | 5 | richbai90
5 | 1 | hi5
8 | 0 | man
7 | 1 | testing123

由于 WordPress 设置用户元表的方式,最后的 WHERE 子句是绝对必要的。如果您熟悉 WordPress,您就会明白该表如下所示

umeta_id   user_id        meta_key      meta_value
--------------------------------------------------
1 | 1 | first_name | bob
2 | 1 | last_name | builder
3 | 1 | nickname | bob

所以我只想要这个表中的值,其中meta_key = to user_practice_role

我理解的方式是最好的方式吗?

最佳答案

据我所知,您根本不需要临时表,您只需在第二个查询中再使用一个联接即可:

SELECT  a.user_id, a.meta_value, b.user_nicename, COUNT(sc.quiz_id) AS Quizes
FROM edo_usermeta a
LEFT JOIN edo_users b
ON a.user_id = b.id
LEFT JOIN edo_plugin_slickquiz_scores sc
ON sc.usr = b.id
AND sc.usr_practice = 123456
WHERE a.meta_key = 'user_practice_role'
GROUP BY a.user_id, a.meta_value, b.user_nicename;

关于mysql - 如何将 Select 和 Join select 连接到单个查询中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17325117/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com