Как JOIN-ом подключить только одну запись подчинённой таблицы?

Даны две таблицы - клиенты и телефоны. Связаны один-ко-многим. Есть ли возможность вывести запросом список клиентов, выбирая каждому клиенту только один телефон (игнорируя остальные его телефоны)?

clients

id
name

phones

id
client_id
phone

Ответы (3 шт):

Автор решения: Apelsin2020

Как я понимаю что-то вот такое нужно:

SELECT t.phone, cl.client FROM telephone t LEFT JOIN clients cl ON t.id = cl.rid WHERE t.phone = 'Номер телефона'

P.s. t.id = cl.rid Это то, что соединяет эти две таблицы

UPD

Ну вот есть клиент Bob. У него два телефона: 02 и 03. И есть клиент Peter. У него 04 и 05. Нужен список: Bob 02, Peter 04

SELECT t.phone, cl.name FROM telephone t LEFT JOIN clients cl ON t.id = cl.rid WHERE t.phone in (02, 04)

Результат:

cl.name | t.phone
Bob | 02
Piter | 04
→ Ссылка
Автор решения: Akina
SELECT t1.name, ANY_VALUE(t2.phone) phone
FROM clients t1
JOIN phones t2 ON t1.id = t2.client_id
GROUP BY t1.name
→ Ссылка
Автор решения: DmitriBolt

Вам не нужно использовать JOIN, так как как раз хотите избавиться от того, ради чего придуман JOIN. Вам нужно добавить к имеющейся таблице одну, ЛЮБУЮ, подходящую запись из второй таблицы. Так и делайте это в лоб. Вот полностью рабочий код для вас

-- Создаем пример
drop table if exists clients;
create temporary table clients
(
    id   int,
    name varchar
);
insert into clients (id, name)
values (1, 'Bob'),
       (2, 'Peter'),
       (3, 'Sanya'),
       (4, 'Dima'),
       (5, 'Petya');

drop table if exists phones1;
create temporary table phones1
(
    client_id int,
    phone     varchar
);
insert into phones1 (client_id, phone)
values (1, '01'),
       (1, '02'),
       (1, '03'),
       (2, '04'),
       (2, '05');

-- Собственно само приклеивание любого, первого попавшегося = (limit 1) подходящего значения из второй таблицы.
select *, (select phone from phones1 where clients.id = phones1.client_id limit 1)
from clients;
commit;

Идея взята отсюда https://sqlinfo.ru/forum/viewtopic.php?pid=49153#p49153

→ Ссылка