Надеюсь, эта подсказка, связанная с ключевым словом Distinct, вам поможет. Когда мы используем отдельный ключ, он обычно выбирает отдельные строки. Поэтому мы не можем ожидать, что он должен возвращать отдельные значения только для одного столбца, перед которым мы написали отдельный. Пример ниже лучше объяснит вам, что я пытаюсь сказать.
create table test(id1 int, id2 int);
insert into test values(1,1),(1,2),(1,3);
Здесь я создал тестовую таблицу, и когда я использую отдельное ключевое слово, используемое в запросе ниже
select distinct id1, id2 from test;
Тогда мы получим такой вывод:
id1 id2
1 1
1 2
1 3
Вы вставляете tour_ID как 0, и поскольку вы определили tour_id и player_id как уникальный ключ в таблице oncourt.players_atp. Таким образом, ваш запрос select каждый раз выбирает tour_id как «0». Поскольку запрос select с отличным получает действительно разные записи, например, player_id - 1,2,3, а имена - john, steve, bill соответственно, тогда запрос select вернет эти 3 записи, такие как (0, 1, john), (0, 2, steve), (0, 3, bill) и т. д.
Если ваша таблица oncourt.players_atp также имеет уникальное ограничение и эта таблица также содержит tour_id, вы можете просто скопировать оттуда идентификатор тура. Если tour_id там отсутствует и вы хотите сгенерировать его только в таблице belgarath.players, тогда в определении вашей таблицы вы можете определить идентификатор тура как автоинкремент, тогда он будет генерировать уникальный идентификатор там, и тогда вам не нужно выбирать tour_id в В вашем запросе вам просто нужно вставить player_id и player_name, как только вы определите tour_id как идентификатор автоинкремента. Надеюсь, это поможет вам.