PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
mrKotik
Отправлено: 05 Февраля, 2019 - 18:52:13
Post Id



Посетитель


Покинул форум
Сообщений всего: 271
Дата рег-ции: Дек. 2013  


Помог: 0 раз(а)




Добрый вечер, программисты. Возник вопрос, возможно ли получить записи которых нет в БД


SELECT `id` FROM `users` where `id` NOT IN (1,2,3,4,5,6)

В базе есть 1,2,3,6


А возможно ли получить, что id 4,5 что-бы вернуло после запроса?
 
 Top
Мелкий Супермодератор
Отправлено: 05 Февраля, 2019 - 19:02:26
Post Id



Активный участник


Покинул форум
Сообщений всего: 11842
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 608 раз(а)




Зависит от СУБД.


-----
PostgreSQL DBA
 
 Top
mrKotik
Отправлено: 05 Февраля, 2019 - 19:04:02
Post Id



Посетитель


Покинул форум
Сообщений всего: 271
Дата рег-ции: Дек. 2013  


Помог: 0 раз(а)




Мелкий пишет:
Зависит от СУБД.
MysqL сейчас так работает выводит, запись которая лишняя, а мне на оборот надо которой нет
Прикреплено изображение (Нажмите для увеличения)
05.02.png
 
 Top
Мелкий Супермодератор
Отправлено: 05 Февраля, 2019 - 19:30:53
Post Id



Активный участник


Покинул форум
Сообщений всего: 11842
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 608 раз(а)




нормально не умеет.
единственный костыль - собрать через большой подзапрос с union all нужные значения и через not exixts подзапрос выкинуть те что есть в таблице.

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT pt.i FROM (
  2. SELECT 1 AS i
  3. UNION ALL
  4. SELECT 5
  5. /*...*/
  6. ) pt
  7. WHERE NOT EXISTS (SELECT id FROM users WHERE id = pt.i)


-----
PostgreSQL DBA
 
 Top
teleoperator27
Отправлено: 05 Февраля, 2019 - 19:38:09
Post Id



Посетитель


Покинул форум
Сообщений всего: 261
Дата рег-ции: Янв. 2017  


Помог: 21 раз(а)




Мелкий, а если так

CODE (SQL):
скопировать код в буфер обмена
  1. CREATE TEMPORARY TABLE `temp` (`id` INT NOT NULL);
  2. INSERT INTO `temp` (`id`) VALUES (1),(2),(3),(4),(5),(6);
  3. SELECT `id` FROM `temp` WHERE `temp`.`id` NOT IN (SELECT `id` FROM `users`);   
 
My status
 Top
mrKotik
Отправлено: 05 Февраля, 2019 - 19:39:40
Post Id



Посетитель


Покинул форум
Сообщений всего: 271
Дата рег-ции: Дек. 2013  


Помог: 0 раз(а)




Спасибо, буду пробивать.
 
 Top
Мелкий Супермодератор
Отправлено: 05 Февраля, 2019 - 20:30:09
Post Id



Активный участник


Покинул форум
Сообщений всего: 11842
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 608 раз(а)




teleoperator27, в принципе тоже можно. Вряд ли not in тут хороший выбор, впрочем. Хотя проверять надо


-----
PostgreSQL DBA
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Работа с СУБД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB