Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Конструкция IF EXISTS
 
 автор: Ghost_user   (14.12.2009 в 14:31)   письмо автору
 
 

У меня такой вопрос!

объясните как пользоваться IF EXISTS.
Для чего это нужно?=) Нужно, чтобы проверить существует ли запись в таблице.

к примеру дана таблица tbl
в ней есть несколько записей!

 id | name
01  | mysql
02  | time
09  | soft
10  | forum
03  | world

как проверить существует ли запись с ID=9

  Ответить  
 
 автор: Trianon   (14.12.2009 в 14:37)   письмо автору
 
   для: Ghost_user   (14.12.2009 в 14:31)
 

это часть языка, на котором пишется код хранимых процедур SQL.
проверить в лоб существование записи можно и проще.
Например, по результату оператора SELECT COUNT(*) > 0 FROM tbl WHERE id=9

  Ответить  
 
 автор: Ghost_user   (14.12.2009 в 14:43)   письмо автору
 
   для: Trianon   (14.12.2009 в 14:37)
 

COUNT работает очень долго с большим кол-во пользователей!
а IF EXISTS летает прям!

я не умею пользоваться IF EXISTS, поможете?
следуйте тому примеру, который я указал ранее, напишите плииз, как реализовать его с помощью конструкции IF EXISTS

  Ответить  
 
 автор: Саня   (08.02.2011 в 11:24)   письмо автору
 
   для: Ghost_user   (14.12.2009 в 14:43)
 

Запросы COUNT(*) на таблицах типа myisam работают ооочень быстро, так как myisam всегда хранит отдельно точное количество записей. Другое дело если используется WHERE. Тогда используется индекс или, в особо хреновых случаях, производится full table scan.

  Ответить  
 
 автор: aetern   (07.02.2011 в 22:56)   письмо автору
 
   для: Trianon   (14.12.2009 в 14:37)
 

так как же, все же это реализовать с IF EXISTS???

  Ответить  
 
 автор: cheops   (07.02.2011 в 23:31)   письмо автору
 
   для: aetern   (07.02.2011 в 22:56)
 

Хм... а можно подробнее об том как вы планируете использовать IF EXISTS и в каком контексте вы его наблюдали? Насколько я помню такая конструкция присутствует в группе операторов DROP и отдельно от него нигде не используется (есть IF, есть IF(), но IF EXISTS в независимом варианте вроде как нет)?

  Ответить  
 
 автор: Trianon   (07.02.2011 в 23:48)   письмо автору
 
   для: cheops   (07.02.2011 в 23:31)
 

одним из термов общего выражения языка SQL является выражение EXISTS(подзапрос) , которое возвращает истину, если подзапрос может вернуть хотя бы одну строку, и ложь, если не может.
Применяется обычно при построении сложных коррелированных запросов.
http://dev.mysql.com/doc/refman/5.0/en/expressions.html

simple_expr:
...
  | EXISTS (subquery)
...

  Ответить  
 
 автор: cheops   (07.02.2011 в 23:58)   письмо автору
 
   для: Trianon   (07.02.2011 в 23:48)
 

Хм... меня именно конструкция IF EXISTS заинтересовала, отдельно IF и EXISTS понятное дело существуют.

  Ответить  
 
 автор: Trianon   (08.02.2011 в 00:01)   письмо автору
 
   для: cheops   (07.02.2011 в 23:58)
 

Отдельно IF мне неизвестна например.

  Ответить  
 
 автор: cheops   (08.02.2011 в 00:05)   письмо автору
 
   для: Trianon   (08.02.2011 в 00:01)
 

Есть такой оператор в хранимых процедурах, вы же сами выше указывали, кроме того одноименная функция присутствует еще с 3 версии.

PS Но мне если честно больше интересны ответы Ghost_user и aetern - может они что-то другое имеют в виду? Хорошо бы увидеть хотя бы примерно запрос, который их заинтересовал.

  Ответить  
 
 автор: aetern   (08.02.2011 в 14:26)   письмо автору
 
   для: cheops   (08.02.2011 в 00:05)
 

я не знаком с IF EXISTS, меня именно заинтересовал вопрос Ghost_user

  Ответить  
 
 автор: Trianon   (08.02.2011 в 15:41)   письмо автору
 
   для: cheops   (08.02.2011 в 00:05)
 

>PS Но мне если честно больше интересны ответы Ghost_user и aetern - может они что-то другое имеют в виду? Хорошо бы увидеть хотя бы примерно запрос, который их заинтересовал.

>aetern (08.02.2011 в 14:26) для: cheops (08.02.2011 в 00:05)
> я не знаком с IF EXISTS, меня именно заинтересовал вопрос Ghost_user

А GHost_user не заходил сюда больше года.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования