gpt4 book ai didi

php - MySQL : complex query dynamic select?

转载 作者:行者123 更新时间:2023-11-29 06:55:13 24 4
gpt4 key购买 nike

我现在在一个复杂的 MySQL 查询上搜索了很多次。

这是一个成就系统。

表格结构简单,形式对称。

第一个表(achievements_base)包含成就引用:每个成就都有:- ID(行的ID,自动递增和唯一),- code_id(成就的引用),- 一个 rank_id(成就的 code_id 的子类别),- 和成就名称(显示目的)。

第二个表(achievements_user)包含用户获得的成就:每个解锁的成就有:- 一个 ID(如果是行,自动递增且唯一),- code_id(成就的引用),- 一个 rank_id(成就的 code_id 的子类别),- 和用户 ID。

表格语法是:

achievements_base
id - code_id - rank_id - name
1 - 1 - 1 - foo
2 - 1 - 2 - bar
3 - 1 - 3 - foobar
4 - 1 - 4 - foofoo
5 - 2 - 1 - barbar

achievements_user
id - code_id - rank_id - user_id
1 - 1 - 1 - 1
2 - 1 - 2 - 1
3 - 2 - 1 - 1

我想显示用户没有的成就(GROUP BY code_id)

In the table exemple above, for example, expected result is, for the user_id 1 :
3 - 1 - 3 - foobar

但我不知道该怎么做!我已经尝试过多次查询。

对不起我的英语,我是法国人!

谢谢!

编辑,我试过的查询之一的例子:

SELECT AB.name
FROM achievements_base AB
RIGHT JOIN achievements_users AU
ON AU.code_id = AB.code_id AND AU.rank_id = AB.rank_id
WHERE (SELECT COUNT(*) FROM achievements_users AU WHERE AU.user_id = 1) = 0
GROUP BY AB.code_id
ORDER BY AB.code_id ASC

最佳答案

下面的怎么样?

SELECT code_id
FROM achievements_base
WHERE code_id NOT IN
(
SELECT code_id
FROM achievements_user
WHERE user_id = 1
)
GROUP BY code_id

关于php - MySQL : complex query dynamic select?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13149487/

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