मैं उसी तालिका से चयन करना चाहता हूं

  • लेख जहां बिल्ली = 'इतिहास' की सीमा 12
  • लेख जहां बिल्ली = 'संस्कृति' की सीमा 12
  • लेख जहां बिल्ली = 'सुजेट डाइवर्स' की सीमा 12

इसके लिए खोज करने के बाद मैं नीचे दिए गए कोड को आजमाता हूं:

SELECT * FROM makale WHERE cat='Histoire' LIMIT 12
UNION ALL
SELECT * FROM makale WHERE cat='Cultures' LIMIT 12
UNION ALL
SELECT * FROM makale WHERE cat='Sujet Divers' LIMIT 12
ORDER BY id DESC

लेकिन कोड काम नहीं करता है मुझे यह त्रुटि मिलती है:

Error
Static analysis:

1 errors were found during analysis.

Unexpected ordering of clauses. (near "LIMIT" at position 172)
SQL query: Copy Documentation

SELECT * FROM makale WHERE cat='Histoire' LIMIT 12 UNION ALL SELECT * FROM makale WHERE cat='Cultures' LIMIT 12 UNION ALL SELECT * FROM makale WHERE cat='Sujet Divers' LIMIT 12 ORDER BY id DESC

MySQL said: Documentation

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'UNION ALL
SELECT * FROM makale WHERE cat='Cultures' LIMIT 12
UNION ALL
SELECT' at line 2

क्या कोई मुझे ऐसा करने का सबसे अच्छा तरीका दिखा सकता है धन्यवाद

-1
houssein ahmed 23 अक्टूबर 2020, 18:03

2 जवाब

सबसे बढ़िया उत्तर

आपको सबक्वायरी चाहिए:

(SELECT * FROM makale WHERE category = 'Histoire' LIMIT 12)
UNION ALL
(SELECT * FROM makale WHERE category = 'Cultures' LIMIT 12)
UNION ALL
(SELECT * FROM makale WHERE category = 'Sujet Divers' LIMIT 12)
ORDER BY id DESC;

आप इसे विंडो फ़ंक्शंस का उपयोग करके भी लिख सकते हैं, लेकिन यह आपका प्रश्न नहीं है।

नोट: यह प्रत्येक श्रेणी के लिए एक मनमाना 12 पंक्तियाँ देता है। मैं कोड को वैसे ही छोड़ रहा हूं, क्योंकि यह आपके द्वारा पूछे गए प्रश्न का उत्तर देता है। लेकिन अगर आप 12 पंक्तियों का एक विशेष सेट चाहते हैं, तो आपको प्रत्येक सबक्वेरी में एक ORDER BY का उपयोग करना चाहिए।

0
Gordon Linoff 23 अक्टूबर 2020, 22:02

सीमा अंत के अलावा कहीं भी प्रकट नहीं हो सकती जब तक कि उप प्रश्नों में उदा

DROP TABLE IF EXISTS T;
CREATE TABLE T(ID INT, CATEGORY VARCHAR(20));
INSERT INTO T VALUES (1,'HISTOIRE'),(2,'HISTOIRE'),(3,'CULTURES'),(4,'SUJET DIVERS'),(5,'SUJET DIVERS'),(6,'SUJET DIVERS');

SELECT * FROM 
(SELECT * FROM T WHERE category='Histoire' LIMIT 2) A
UNION ALL
(SELECT * FROM T WHERE category='Cultures' LIMIT 2) 
UNION ALL
(SELECT * FROM T WHERE category='Sujet Divers' LIMIT 2) 
ORDER BY id DESC

+------+--------------+
| ID   | CATEGORY     |
+------+--------------+
|    5 | SUJET DIVERS |
|    4 | SUJET DIVERS |
|    3 | CULTURES     |
|    2 | HISTOIRE     |
|    1 | HISTOIRE     |
+------+--------------+
5 rows in set (0.001 sec)
0
P.Salmon 23 अक्टूबर 2020, 18:23