如果匹配条件

时间:2017-02-02 14:40:46

标签: php mysql

好吧,我可能过分强调我自己的MySQL技能,但这是我的问题:我有一个表格,我存储产品的类别给他们一个排序顺序在sort

中指定
-----------------------
|   category   | sort |
|---------------------|
|  category3   |  1   |
|  category1   |  2   |
|  category2   |  3   |
-----------------------

当我显示类别时,我会显示它们ORDER BY sort ASC。现在我想给管理员更改排序顺序的可能性,我要做的就是提取与排序编号关联的类别并在PHP中使用它们,将+1添加到位置后面的数字管理员希望放置类别并向db发送多个查询,以更新所有sort值。

(即如果管理员想要在位置n.1处的category2,我将提取*排序值,从1-2添加+1,排除3)

因为我认为这是效率最低的方法,我想知道是否可以使用MySQL查询完成所有操作。出于这个原因,我想到了这样的事情

$sql = 'CREATE PROCEDURE rowperrow()
        BEGIN 
            SET @position = '.$newCatPosition.'
            DECLARE rowNum INT DEFAULT 0
            DECLARE i INT DEFAULT 0
            SELECT COUNT(*) FROM productsareas INTO rowNum
            SET i=0
            WHILE i<rowNum DO
                SELECT @sortNum = sort FROM productsareas
                IF @sortNum>@position-1 THEN 
                    UPDATE productsareas SET sort=@sortNum +1
                END IF
                SET i=i+1
            END WHILE
        END';

如果排序编号为> $newCatPosition-1(这是管理员想要将类别设置为-1的对应编号,则该查询应检查每行的行数,因为同样的编号必须为增加+1以将空格留给新类别):如果为真,则替换增加+1的排序编号。

说我尝试过这个查询并没有用,但我想要获得的结果与我写的相似

是没用的

0 个答案:

没有答案