Как получить все значения столбца на основе значения другого столбца в той же таблице?

#php #mysql #sql

#php #mysql #sql

Вопрос:

Я получил следующую структуру:

 admin_id  ||  country_id 
---------------------------------
 1              2      
 5              1
 1              2
 2              3
 5              62
 1              1
 3              62
  

Как получить все значения, взяв $_SESSION['admin']['id'] , найдя country_id этого администратора и получив все остальные admin_id и country_id, которые совпадают с администратором сеанса?

Итак, допустим, что текущий зарегистрированный администратор имеет id = 5 , это означает, что admin_id: 5 имеет два country_id: 1 и 62 . Я хочу взять все строки, которые имеют country_id: 1 и 62.

Он должен вернуть это:

 admin_id || country_id 
------------------------        
 5              1  
 5              62
 1              1
 3              62
  

Как я могу сделать это в одном sql-запросе?

Ответ №1:

Вы можете использовать where предложение для фильтрации по admin_id country_id :

 select t.*
from t
where t.admin_id = 5 or
      t.country_id in (select t2.country_id from t t2 where t2.admin_id = 5);
  

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

1. t.admin_id = 5 является избыточным — все строки соответствуют этому условию соответствует второму условию.

Ответ №2:

 SELECT t1.*
FROM table t1
JOIN table t2 USING (country_id)
WHERE t2.admin_id = 5
  

скрипка

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

1. К какой таблице вы присоединяетесь? У меня есть только один

2. @ssssss Одна таблица. Две его копии.

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

4. Пожалуйста, рассмотрите возможность добавления объяснения к вашему ответу