используя условие AND MYsql

Мне нужно: когда я даю training_id 172 И training_id 174, он должен вернуть только пользователя 150

введите описание изображения здесь

Я пробовал это, но он не работал

SELECT user_id FROM Training_users WHERE training_id = 172 AND training_id = 174 

В большинстве случаев training_id может быть больше 2

Solutions Collecting From Web of "используя условие AND MYsql"

Что относительно этого запроса:

 SELECT user_id, COUNT(*) as nbTrainings FROM Training_users WHERE training_id = 172 OR training_id = 174 GROUP BY user_id HAVING nbTrainings = 2 

Он будет фильтровать пользователей, имеющих обучение 172 или 174. Затем он будет подсчитывать, сколько тренировок каждый пользователь возвратил и удерживает только один (ы) с двумя тренировками.

Это предполагает, что пользователь не может иметь несколько тренингов 172 и / или 174

Преимущество этого против множественных самосоединений заключается в том, что вам не нужно объединяться несколько раз для каждого идентификатора обучения, если вы хотите фильтровать более двух идентификаторов обучения.

Дополнительная информация о GROUP BY и HAVING здесь

EDIT: после тестирования в sqlfiddle это, похоже, работает и не возвращает неправильные значения, если у некоторых пользователей есть несколько training_id, а у одного – 172 или 174

Рабочий sqlfiddle

Это должно работать:

 SELECT a.user_id FROM Training_users a, Training_users b WHERE a.training_id = 172 and a.user_id = b.user_id AND b.training_id = 174; 

Это должно сделать это:

 SELECT a.user_id FROM Training_users a RIGHT JOIN Training_users b ON a.user_id = b.user_id AND b.training_id = 174 WHERE a.training_id = 172 
 select user_id from work where training_id in (172,174) group by user_id having count(*) > 1; 

Проверка SQLFiddle Demo

Сделайте что-нибудь подобное

 SELECT user_id FROM Training_users WHERE (training_id = 172) AND (training_id = 174)