@AcidZer0

Как составить вложенный запрос для SELECT?

Доброго времени суток.
Есть таблица `users` с пользователями, есть такие столбцы как `user_id` и `ip`.
Нужно сперва взять все значиния `ip` у определенного пользователя, затем провести select по результатам ко всей таблице.
SELECT * FROM  `users`
WHERE `ip` = (select `ip` FROM `users_base` WHERE `user_id` = 'blahblahblah');

Такой запрос зависает.
Пробовал так же
create table `user_tmp` (ip VARCHAR(32));
insert INTO `user_tmp` (select `ip` from `users` WHERE `user_id` = 'blahblahblah');
select * from  `users` WHERE `ip` IN (select `ip` FROM `user_tmp');

Ругается на ошибку синтаксиса.
  • Вопрос задан
  • 254 просмотра
Решения вопроса 2
VladimirAndreev
@VladimirAndreev
php web dev
SELECT * FROM  `users`
WHERE `ip` IN (select `ip` FROM `users_base` WHERE `user_id` = 'blahblahblah');


create table `user_tmp` (ip VARCHAR(32));
insert INTO `user_tmp` (select `ip` from `users` WHERE `user_id` = 'blahblahblah');
select * from  `users` WHERE `ip` IN (select `ip` FROM `user_tmp`);
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
SELECT `u2`.*
    FROM `users` AS `u1`
    JOIN `users` AS `u2` ON `u1`.`user_id` = :user_id AND `u2`.`ip` = `u1`.`ip`
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
Если количество IP у одного юзера не превышает ~1000 - самый быстрый вариант будет в 2 запроса
1)
select `ip` FROM `users_base` WHERE `user_id` = 'blahblahblah'


2)
SELECT * FROM  `users`
WHERE `ip` IN ( ... )
где вместо ... пишем конкретные ip полученные из прошлого запроса.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы