मैं यहाँ एक SQL नौसिखिया हूँ। मान लीजिए हमारे पास निम्न तालिका है:

id              type
1               A   
2               A
3               B
4               B
5               C
6               C
7               D
8               D
...

मान लें कि मैं 'टाइप' कॉलम के अंतर्गत संभावित मानों को नहीं जानता और मान लेता हूं कि यह संभावित मानों की N संख्या में से एक हो सकता है। MySQL में, मैं एक प्रकार के लिए सभी पंक्तियों को प्राप्त करने के लिए एक क्वेरी कैसे बना सकता हूं (या तो यादृच्छिक रूप से एक प्रकार का चयन करें या पहले वर्णानुक्रम में क्रमबद्ध प्रकार लें)?

वांछित आउटपुट:

id              type
1               A   
2               A

या

id              type
5               C   
6               C

या

id              type
7               D   
8               D
0
code 17 पद 2020, 06:27

3 जवाब

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

आप एक यादृच्छिक प्रकार चुन सकते हैं और सभी पंक्तियों का उपयोग कर प्राप्त कर सकते हैं:

select t.*
from t
where t.type = (select t2.type from t t2 order by rand() limit 1);
2
Gordon Linoff 17 पद 2020, 06:28

MySQL 8+ समाधान के लिए आप यहां RANK() का उपयोग कर सकते हैं:

WITH cte AS (
    SELECT *, RANK() OVER (ORDER BY type) rnk
    FROM yourTable
)

SELECT id, type
FROM cte
WHERE rnk = 1;

यह दृष्टिकोण वर्णानुक्रम में सबसे कम type मान के लिए सभी रिकॉर्ड लौटाएगा।

0
Tim Biegeleisen 17 पद 2020, 06:32

यदि आप पहले type को वर्णानुक्रम में क्रमबद्ध करना चाहते हैं तो min (या अंतिम प्रकार के लिए max का उपयोग करें) निम्नानुसार करें:

select t.*
  from your_table t
 where t.type = (select min(tt.type) from your_table tt);
0
Popeye 17 पद 2020, 06:48