gpt4 book ai didi

php - mysql在多行中选择不同的地方

转载 作者:行者123 更新时间:2023-11-29 05:19:59 26 4
gpt4 key购买 nike

考虑一个表,zGameParticipants 具有这两列和值

GameID | ParticipantID
1 | 10
1 | 11
2 | 11
2 | 12
3 | 13
3 | 14
3 | 15

我想选择例如具有 ParticipantID 10 和 11 的不同 GameID。出于显而易见的原因,我不能这样做

SELECT 
DISTINCT GameID
FROM zGameParticipants
WHERE ParticipantID IN ($ParticipantIDs)

其中 $ParticipantIDs 是一个包含 ParticipantID 的数组。

可以有 n 个 ParticipantID,因此将 n 个 ParticipantID 添加到数组并作为参数绑定(bind)可能会以某种方式起作用。否则嵌套选择可能是我正在寻找的,但我无法理解这个问题。

最佳答案

如果你想要的只是一个独特的游戏,无论参与者的数量......也就是每场比赛 1 行

然后只需添加 GROUP BY GameID

这是假设 $ParticipantIDs 是一个像这样的逗号分隔列表

SELECT GameID
FROM zGameParticipants
WHERE ParticipantID IN (13,14,15)
GROUP BY GameID

如果你不知道如何使它成为一个逗号分隔的列表,那么在 php 中像这样使用 implode

$commaList = implode(', ', $ParticipantIDs);

然后你可以把它放在你的查询中

SELECT GameID
FROM zGameParticipants
WHERE ParticipantID IN ($commaList)
GROUP BY GameID

我建议您考虑将其设为参数化查询,并将参数绑定(bind)到 IN() 语句中

编辑:

从您的评论来看,您似乎希望所有参与者都参与游戏,以便返回该行。要做到这一点,你可以做这样的事情

$counter = count($ParticipantIDs);
$commaList = implode(', ', $ParticipantIDs);

SELECT GameID
FROM zGameParticipants
WHERE ParticipantID IN ($commaList)
GROUP BY GameID
HAVING COUNT(DISTINCT ParticipantID) = $counter

关于php - mysql在多行中选择不同的地方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27259972/

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