Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

mysql if . में चर क्यों नहीं बदल रहा है

क्या आप इसे ढूंढ रहे हैं?

SELECT rn, id, category_id, title
  FROM
(
  SELECT *, @a := IF(@c = category_id, @a + 1, 1) rn, @c := category_id
    FROM photos CROSS JOIN (SELECT @c := NULL, @a := 0) i
   ORDER BY category_id
) q
 WHERE rn <= 4;

आउटपुट:

| RN | ID | CATEGORY_ID |  TITLE |
|----|----|-------------|--------|
|  1 | 43 |           1 | Title1 |
|  1 | 28 |           2 | Title2 |
|  2 | 42 |           2 | Title3 |
|  1 | 11 |           3 | Title4 |
|  1 |  3 |           4 | Title5 |
|  2 | 29 |           4 | Title6 |
|  3 | 33 |           4 | Title7 |

यह रहा SQLFiddle डेमो

यहां आपके कोड के लिए सही पंक्ति संख्या बनाने के लिए एक समाधान दिया गया है

SET @a:=0;
SET @cid:=0;   
SELECT @a, @cid, q.*, @cid:=q.category_id FROM (
    SELECT *
    FROM photos
    ORDER BY category_id
) AS q
WHERE @a := IF(@cid=q.category_id, @a+1, 1)

यह रहा SQLFiddle डेमो

SQL कथन के निष्पादन का क्रम मायने रखता है।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. पीडीओ मूल्य वृद्धि पीएचपी, मैसकल

  2. नए वीएम इंस्टेंस जीसीपी में वर्डप्रेस माइग्रेशन

  3. RDS डेटाबेस की स्थानीय प्रतिकृति

  4. PHP + MySQL लेनदेन उदाहरण

  5. स्ट्रांगलूप:एम्बेड करता हैकई बनाम हैमनी और संबंधित हैं