Как использовать набор идентификаторов пользователей в таблице и получить имя пользователя пользователей с этими идентификаторами из таблицы пользователей

#mysql

Вопрос:

Я новичок в MySQL и уже как бы пытаюсь запросить то, что мне нужно.

Существует таблица под названием Тема, которая выглядит так

  --------- ---------- ------------- ------------ ------------ -- 
| user_id | subject  | description | created_at | updated_at |  |
 --------- ---------- ------------- ------------ ------------ -- 
|       1 | A        | non         | 3434343434 |   34343433 |  |
|       2 | B        | non         | 3434343434 | 3434343434 |  |
|       3 | C        | non         | 3434343434 | 3434343434 |  |
|       3 | D        | non         | 3434343434 | 3434343434 |  |
 --------- ---------- ------------- ------------ ------------ -- 
 

и пользователь таблицы, у которого есть только столбцы user_id и username

Я хочу получить набор имен пользователей, который существует в таблице «Тема».

SELECT DISTINCT user_id FROM Subject дает мне набор user_id букв «с». Как я могу использовать эти user_id файлы и получить их usernames из таблицы пользователей?

Спасибо!

Комментарии:

1. Используйте IN предложение или EXISTS предложение. ( IN на мой взгляд, легче писать и читать. Я бы использовал EXISTS или более сложные вещи, где IN этого недостаточно.)

Ответ №1:

Для довольно дословного перевода ваших требований мы могли бы использовать существующую логику здесь:

 SELECT u.username
FROM User u
WHERE EXISTS (SELECT 1 FROM Subject s WHERE s.user_id = u.user_id);
 

Ответ №2:

Другой вариант-использовать inner join

 select distinct u.username from User u inner join Subject s on s.user_id=u.user_id
 

Комментарии:

1. На мой взгляд, это плохое предложение. Зачем объединять все строки только для того, чтобы закрыть большинство из них позже? Вы создаете большой промежуточный результат, который вам на самом деле не нужен. Если вы хотите присоединиться, вместо этого присоединяйтесь к различным значениям, т. Е. присоединяйтесь с помощью подзапроса (производная таблица). Но для данной задачи IN они и EXISTS гораздо более уместны, потому что существуют именно для такого типа задач.

2. @ThorstenKettner спасибо за ваш комментарий, и я учусь на нем!