gpt4 book ai didi

MySQL 如何检查一个值是否已经在结果中?

转载 作者:行者123 更新时间:2023-11-29 02:26:57 24 4
gpt4 key购买 nike

我有一个复杂的问题。

如何强制 MySQL 将第一个“command.deagle2”(模式 1)替换为第二个“command.deagle2”(模式 0)?

我只是给你看代码,希望你能帮助我。

这是我的代码:

SELECT DISTINCT
`right`.`name` AS `Right`,
1 AS `Mode`

FROM
`user`

INNER JOIN
`user_group` ON
`user`.`id` = `user_group`.`user_id`

INNER JOIN
`group` ON
`user_group`.`group_id` = `group`.`id`

INNER JOIN
`group_right` ON
`group`.`id` = `group_right`.`group_id`

INNER JOIN
`right` ON
`group_right`.`right_id` = `right`.`id`

WHERE
`user`.`username` = 'Dominik'

UNION

SELECT DISTINCT
`right`.`name` AS `Right`,
`user_right`.`mode` AS `Mode`

FROM
`user`,
`right`,
`user_right`

WHERE
`user`.`id` = `user_right`.`user_id` AND
`right`.`id` = `user_right`.`right_id` AND
`user`.`username` = 'Dominik'

此查询返回以下结果:

Right           | Mode
-----------------------
command.deagle | 1
command.deagle2 | 1
command.gmx | 1
command.givegun | 1
command.deagle2 | 0

示例数据集:http://pastebin.com/m5LHsDRi

我已经看到有一个 REPLACE 关键字,但我真的不知道如何正确使用它。

谢谢你的时间。

多米尼克

最佳答案

我认为您的“模式”列构成优先级,并且您希望结果集中唯一具有最低优先级的“正确”的不同值。

尝试围绕您提供给我们的查询包装此查询:

  SELECT Right,
MIN(Mode) AS Mode,
FROM (
/* your big query */
) AS q
GROUP BY Right

这会给你你想要的。顺便说一下,如果这样做,您可以从主查询中删除 DISTINCT 关键字; GROUP BY 将填充相同的目的。

关于MySQL 如何检查一个值是否已经在结果中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19876524/

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