0
다음과 같은 기록이있다 MySQL은 5.5.30, 테이블에, purchase_order_product (의 MyISAM)를 사용하여 :MySQL의 쿼리는 워크 벤치에서 작동하지만 코드 내
+----------+------------------+
| order_id | order_product_id |
+----------+------------------+
| 98 | 1 |
| 99 | 14 |
| 99 | 15 |
| 100 | 16 |
| 100 | 17 |
| 100 | 18 |
| 101 | 19 |
| 102 | 20 |
+----------+------------------+
나는 MySQL의 워크 벤치에서 다음 쿼리를 실행하면 5.2.47 CE : 나는 다음과 같은 출력을 얻을
SELECT pop.order_id, pop.order_product_id,
@RUNNING:=IF(@PREVIOUS = pop.order_id, @RUNNING, 0) + 1 AS rownum,
@PREVIOUS:=pop.order_id as previd
FROM purchase_order_product pop
ORDER BY pop.order_id , pop.order_product_id ASC;
는 :
는+----------+------------------+--------+--------+
| order_id | order_product_id | rownum | previd |
+----------+------------------+--------+--------+
| 98 | 1 | 1 | 98 |
| 99 | 14 | 1 | 99 |
| 99 | 15 | 2 | 99 |
| 100 | 16 | 1 | 100 |
| 100 | 17 | 2 | 100 |
| 100 | 18 | 3 | 100 |
| 101 | 19 | 1 | 101 |
| 102 | 20 | 1 | 102 |
+----------+------------------+--------+--------+
내 원하는 목표는 가치있는 것입니다 e의 rownum은 괜찮습니다. 지금까지 예상대로 ...
동일한 PHP 사용자가 동일한 데이터베이스에 대해 PHP 코드 또는 mysql 명령 줄에서 쿼리를 실행하면 다음 출력 :
+----------+------------------+--------+--------+
| order_id | order_product_id | rownum | previd |
+----------+------------------+--------+--------+
| 98 | 1 | 1 | 98 |
| 99 | 14 | 1 | 99 |
| 99 | 15 | 1 | 99 |
| 100 | 16 | 1 | 100 |
| 100 | 17 | 1 | 100 |
| 100 | 18 | 1 | 100 |
| 101 | 19 | 1 | 101 |
| 102 | 20 | 1 | 102 |
+----------+------------------+--------+--------+
위에서 볼 수 있듯이, rownum은 항상 1입니다!
난 혼란스러운 문제에 대한 해결책을 광범위하게 검색했습니다. 아무 소용이 없습니다. 아무도 무슨 일이 벌어지고 있는지 모른다. 내가 뭔가 잘못하고 있는거야?
SET @RUNNING:=0;
SET @PREVIOUS:=0;
이 쿼리 이전과 같은 MySQL의 세션에서 수행해야합니다 :
대단히 감사합니다! 매력처럼 일했습니다! – jerahian
@jerahian 다행히 도울 수있어 :) 응원의 친구 – Stephan