Задавайте вопросы, мы ответим
Вы не зашли.
Спасибо, я в общем и целом это уже час читаю (через http://translate.google.com/translate?h … elete.html) и пытаюсь понять.
Было бы там http://dev.mysql.com/doc/refman/5.5/RU/delete.html. было бы попроще. Понять бы что я ищу, спросил бы яндекс. Поэтому буду благодарен за любую подсказку.
Отредактированно platedz (17.11.2012 06:05:47)
Неактивен
The preceding examples use INNER JOIN, but multiple-table DELETE statements can use other types of join permitted in SELECT statements, such as LEFT JOIN. For example, to delete rows that exist in t1 that have no match in t2, use a LEFT JOIN:
DELETE t1 FROM t1 LEFT JOIN t2 ON t1.id=t2.id WHERE t2.id IS NULL;
P.S. "За одним столом синтаксис" это жесть.
Неактивен
Неактивен
Спасибо за ответ, буду вдвойне благодарен, за пояснения is null. Как бы например я мог использовать его в других запросах.
Неактивен
Сделайте запрос
Неактивен
Спасибо большое, просто не знал, что is Null работает когда полей нет, думал, что только если у них в самой таблице null выставлено.
Неактивен
Подскажите, пожалуйста, самый простой и быстрый по обработке способ проверить наличие полей, в таблице
замену
(bool)mysql_num_rows(mysql_query("SELECT * FROM ........"))
возможно даже желательно в виде false true
Отредактированно platedz (29.11.2012 05:09:42)
Неактивен
http://sqlinfo.ru/forum/viewtopic.php?id=6173
P.S. Ну и конечно не писать select *
Неактивен
Спасибо за ответ
если я правильно понимаю, то это лучший вариант запроса
(bool)mysql_num_rows(mysql_query("SELECT count(*) FROM ........ limit 1"))
Или может есть более удачные варианты? Т.е. мне не нужно количество записей, а только узнать есть они или нет.
Отредактированно platedz (29.11.2012 07:29:52)
Неактивен
А подскажте, что будет лучше
так
1)
(bool)mysql_num_rows(mysql_query("SELECT id FROM ........ limit 1"))
или так
2)
(bool)mysql_fetch_array(mysql_query("SELECT count(*) FROM ........ limit 1"))
?
На мой взгляд при использовании count(*) идет проход по всей базе, а при обращении к id наверное обход остановится, как только найдет limit записей, и дальше искать не будет. Поэтому скажем если первые записи будут вначале, то запрос обработается быстрее. Но это только предположение, а вот как оно на самом деле?
Неактивен
platedz написал:
а при обращении к id наверное обход остановится, как только найдет limit записей, и дальше искать не будет.
Это если у вас вас order by .. limit
Так как вам сортировка не нужна, то order by null limit 1
Неактивен
У меня вообще нет order by,
Пока написал,
SELECT id FROM table where id='id' limit 1
или лучше так
SELECT id FROM table where id='id' Order by null limit 1
??
Или еще как?
Неактивен
Если id уникально, то вообще limit не нужен, иначе второй вариант.
P.S. А зачем в кавычках (ведь id это число)?
Неактивен
Да id число. Хотя у меня наверное будет несколько запросов, возможно буду и не только уникальные. Большое спасибо за ответ.
Неактивен
Хотя если лимит не нужен, то получается он все равно обойдет всю таблицу и не остановится по окончанию limit. Правильно я понимаю?
Неактивен
Предполагалось, что если уникально значение, то unique index, а так да.
Неактивен
Еще раз спасибо за ответ.
Неактивен