SQL Выбрать все в таблице, которые имеют тот же идентификатор, что и «..»

В принципе, у меня есть таблица пользователей поддержки, и в разных отделах есть разные пользователи разных уровней.

Итак, допустим, у меня в основном есть следующая таблица:

id | userID | deptID | level
1      1        1        1
2     119       1        2
3      2        1        3
4     101       2        1
5     104       2        2

И у меня есть номер id , поэтому, допустим, я хочу, чтобы все пользователи с тем же deptID были как пользователь в id : 3 , тем самым возвращая первые три строки.

Что это за оператор SQL?

3

5 ответы

Вы можете использовать следующий запрос, содержащий подзапрос:

SELECT * 
FROM <table> 
WHERE deptID=(
              SELECT deptID FROM <table> WHERE userID=3
             )
6
добавлено
Вложенные операторы Select? Я этого раньше не видел.
добавлено автор Chud37, источник
hmm пустой результат ..
добавлено автор Chud37, источник
oh right, not userID , но id , работает красиво! Спасибо, я узнал что-то новое :)
добавлено автор Chud37, источник
@fedorqui, извините, проклятые временные ограничения здесь мешали мне, и я забыл об этом. Я отметил это сейчас. Большое спасибо за Вашу помощь.
добавлено автор Chud37, источник
Они называются суб-выборами.
добавлено автор hd1, источник
Да! Вы можете с ними справиться:)
добавлено автор fedorqui, источник
Помните изменение <table> для имени вашей таблицы.
добавлено автор fedorqui, источник
Хорошо читать, это помогло вам, @ Chud37!
добавлено автор fedorqui, источник
Кстати, @ Chud37, было бы неплохо, если бы вы могли отметить ответ как «принятый».
добавлено автор fedorqui, источник
@ Chud37 не проблема :) рад, что он сработал с тобой ... и да, это за 15 минут заставляет нас забыть о принятии!
добавлено автор fedorqui, источник
@ Chud37 они известны как подзапросы
добавлено автор paul, источник
возможно, потому, что у вас нет пользователя с userId = 3 в вашей таблице
добавлено автор paul, источник
select  u.*
from    users u join users u2 on u.deptID = u2.deptID
where   u2.id = 3
2
добавлено
Непроверенный, я бы сказал, что JOIN ... WHERE был ошибкой, но кажется, что MySQL, по крайней мере, проглатывает его без жалобы :) JOIN ... ON - это то, что другое базы данных требуют.
добавлено автор Joachim Isaksson, источник
yep, он по-прежнему действителен SQL, но не нужно быть настолько старым. ответ отредактирован ...
добавлено автор paul, источник
SELECT *
FROM Users
WHERE deptID IN 
    (SELECT deptID FROM Users WHERE userID = 3)
1
добавлено
select * from data where deptid in (select deptid from data where id=3);

Использовать этот запрос

0
добавлено

попробуй это

select my.*
from myTable my
join myTable myt on my.deptID = myt.deptID
where myt.id = 3
0
добавлено
извините, было правильно :), обновлено
добавлено автор echo_Me, источник
Я думаю, что это должно быть , где myt.id = 3 ...?
добавлено автор Joachim Isaksson, источник
DBA - русскоговорящее сообщество
DBA - русскоговорящее сообщество
1 345 участник(ов)

Общаемся и обсуждаем темы, посвященные DBA, PostgreSQL, Redis, MongoDB, MySQL, neo4j, riak и т.д. См. также: @devops_ru, @kubernetes_ru, @docker_ru, @nodejs_ru Рекомендуем сразу отключить уведомления, чтобы пребывание здесь было полезным и комфортным.

MySQL
MySQL
995 участник(ов)

The group is about MySQL. For code use hastebin.com. Admin: @smlkw

SqlCom.ru - Стиль жизни SQL
SqlCom.ru - Стиль жизни SQL
908 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только MS SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz). Предложения в @sql_ninja

SQL_Ninja
SQL_Ninja
340 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz)