id
, pos
및 status
열이있는 mysql 테이블이 있어야합니다.
그리고 pos
정확한 값 id
값을 가장 가까운 작은 pos
값으로 바꿔야합니다. 하지만 status = 1
행만 계산해야합니다. 그것은 다음과 같이 작동합니다 즉
:1 개의 mysql 쿼리를 만들려면
$pos = mysql_result(mysql_query("select pos from foo where id = $id"),0);
$min = mysql_result(mysql_query("select min(pos) from foo where status = 1"),0);
if($pos != $min){
$i = mysql_result(mysql_query("SELECT pos from foo where pos < $pos ORDER by pos DESC LIMIT 1"),0);
mysql_query("update tbc_sidebar set pos = $i where id = $id");
mysql_query("update tbc_sidebar set pos = pos + 1 where id <> $id AND pos = $i");
}
그것은이 같은 잘 작동하지만이 때문에 하나의 간단한 일 5 개 쿼리를 가지고 최선의 해결책이 아니다 생각합니다. 모든 쿼리를 적은 쿼리로 처리하는 방법이 있습니까? 감사! 사용하십시오 저장 프로 시저[1][2] 또는 transaction로 한 번에 여러 쿼리를 보낼 :
그것은 간단합니다, 왜 일을 복잡하게합니까? –