Архив

Публикации с меткой ‘mysql’
17 февраля 2016 Нет комментариев
SELECT * FROM `redirect` ORDER BY CHAR_LENGTH(rfrom) DESC

В результате сортировка произойдет по количеству символов в rfrom от наибольшего

Categories: MySQL Tags:
9 февраля 2016 Нет комментариев
CREATE TEMPORARY TABLE IF NOT EXISTS temp_table(`uid` int(10)) ENGINE=MEMORY;
TRUNCATE TABLE temp_table;
INSERT INTO `temp_table` (SELECT MIN(uid) as uid FROM `base` GROUP BY `organization`);
DELETE FROM `base` WHERE `uid` NOT IN (SELECT `uid` FROM `temp_table`);
ALTER IGNORE TABLE base ADD UNIQUE KEY(organization);
Categories: MySQL Tags:
27 января 2016 Нет комментариев

В примере нужно сортировать позиции каталога по наименованию, но вначале товары в наличии — остаток которых больше 0.

SELECT * FROM `catalog` WHERE `hide`='0' ORDER BY IF(`ost`,TRUE,FALSE) DESC, `name` ASC;

upd:
замечено что позиции с остатком меньше 0 все равно попадают в начало списка.
Другой вариант:

SELECT * FROM `catalog` WHERE `hide`='0' ORDER BY `ost`>0 DESC, `name` ASC;
Categories: MySQL Tags:
21 декабря 2015 Нет комментариев

Необходимо во where сделать выборку по varchar как по int.

В примере в таблице sizes — поле name — varchar, нужно выбрать все строки в которых наименование размера больше 140.
При обычной выборке в результат попадет также, к примеру, 50, т.к. сортировка будет по алфавиту.

Чтобы сделать выборку как для числовых данных используем:

SELECT * FROM sizes WHERE CAST(name AS SIGNED)>='140';
Categories: MySQL Tags:
7 сентября 2015 Нет комментариев
SELECT * FROM `tablename` WHERE `fieldname` REGEXP '^[0-9]+$'

пример update:

UPDATE `tablename` SET `field_en`=`field_ru` WHERE `field_ru` REGEXP '^[0-9]+$';
Categories: MySQL Tags:
$arrs=array('_GET','_POST','_COOKIE');
foreach($arrs as $arr_key=>$arr_value){
	if(is_array($$arr_value)){
		foreach($$arr_value as $key=>$value){
			$nbz1=substr_count($value,'--');
			$nbz2=substr_count($value,'/*');
			$nbz3=substr_count($value,"'");
			$nbz4=substr_count($value,'"');
			if($nbz1>0||$nbz2>0||$nbz3>0||$nbz4>0){
				Print404();
				exit(); 
			}
		}
	}
}

http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=83821

Categories: PHP, Web Tags: ,
2 февраля 2015 3 комментария

Увеличить значения какого либо поля на указанный процент от текущего значения для всех или группы строк:

UPDATE `tablename` SET `fieldname`=`fieldname`+(`fieldname`/100*процент)

Конкретный пример:
увеличить цену всех позиций каталога на 30% кроме тех, которые находятся в подкатегориях категории с id 203.

UPDATE `catalog` SET `price`=`price`+(`price`/100*30) WHERE `parent` NOT IN (SELECT id FROM `razdel` WHERE `parent`='203')
Categories: MySQL Tags: