MySQL INNER JOIN несколько строк одинаковое значение - PullRequest
0 голосов
/ 10 ноября 2019

Обе следующие таблицы имеют 2 записи для одного и того же игрока.

Наказание за стол: table punishment Перезарядка стола: table cooldown

SELECT punishment_id, punishment.reason, cooldown.id, cooldown.time_left FROM player INNER JOIN punishment ON player.most_uuid=punishment.most_uuid INNER JOIN cooldown ON player.most_uuid=cooldown.most_uuid WHERE player.most_uuid=2941535451391147758

В результате этого запроса у меня есть некие «дублированные» строки. Я получаю 4 строки, когда я хочу, чтобы только 2 содержали основные значения.

Результат запроса result of the query

Мне нужны все значенияв строках, но, как вы можете видеть, есть пары строк с одинаковым значением дважды.

Есть ли возможность слияния их, чтобы фактически иметь 2 таких (и не иметь дублированных значений):

enter image description here

1 Ответ

1 голос
/ 11 ноября 2019

Я думаю:

SELECT punishment_id, punishment.reason, cooldown.id, cooldown.time_left FROM player INNER JOIN punishment ON player.most_uuid=punishment.most_uuid INNER JOIN cooldown ON player.most_uuid=cooldown.most_uuid WHERE player.most_uuid=294153545139114775

Может быть преобразовано в:

SELECT punishment_id, punishment.reason, cooldown.id, cooldown.time_left FROM punishment INNER JOIN cooldown ON punishment.most_uuid=cooldown.most_uuid WHERE punishment.most_uuid=294153545139114775

Это работает, только если вы не хотите проверять существование на столе игрока.

Если вы сделали это специально, я рекомендую использовать GROUP BY:

SELECT punishment_id, punishment.reason, cooldown.id, cooldown.time_left FROM player INNER JOIN punishment ON player.most_uuid=punishment.most_uuid INNER JOIN cooldown ON player.most_uuid=cooldown.most_uuid WHERE player.most_uuid=294153545139114775 GROUP BY punishment_id

Надеюсь, это полезно. Bye

...