मेरे पास ओवरव्यू और current_voltage नामक दो टेबल हैं। मैं एक टेबल आउटपुट में दो अलग-अलग तालिकाओं का शीर्ष 1 रिकॉर्ड प्राप्त करना चाहता हूं।
एसक्यूएल क्वेरी
select top 1 VL1,VL2,VL3 from current_voltage
where deviceimei ='233'
order by devicetimestamp desc
union
select top 1 OTI,WTI,ATI from overview
where deviceimei ='233'
order by devicetimestamp desc
अनुरोध करें
VL1,VL2,VL3,OTI,WTI,ATI
234,235,234,25,24,25
3 जवाब
एक साधारण जॉइन करेगा। ये रहा:
SELECT TOP 1 cv.VL1, cv.VL2, cv.VL3, ov.OTI, ov.WTI, ov.ATI
FROM current_voltage cv
JOIN overview ov
ON cv.deviceimei = ov.deviceimei
WHERE cv.deviceimei ='233'
ORDER BY cv.devicetimestamp DESC, ov.devicetimestamp DESC
Sql में जॉइन के बारे में अधिक पढ़ने के लिए, यह देखें।
आपको 2 प्रश्नों के क्रॉस जॉइन की आवश्यकता है:
select t1.*, t2.*
from (
select top 1 VL1,VL2,VL3 from current_voltage
where deviceimei ='233'
order by devicetimestamp desc
) t1 cross join (
select top 1 OTI,WTI,ATI from overview
where deviceimei ='233'
order by devicetimestamp desc
) t2
आप पार्श्व शामिल होने का भी उपयोग कर सकते हैं:
select vc.*, ov.*
from current_voltage cv cross apply
(select top (1) ov.*
from overview ov
where ov.deviceimei = cv.deviceimei
order by ov.devicetimestamp desc
) ov
where ov.deviceimei ='233'
order by cv.devicetimestamp desc;
संबंधित सवाल
नए सवाल
sql
संरचित क्वेरी भाषा (एसक्यूएल) डेटाबेस को क्वेरी करने के लिए एक भाषा है। प्रश्नों में कोड उदाहरण, तालिका संरचना, नमूना डेटा और DBMS कार्यान्वयन के लिए एक टैग (जैसे MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2, आदि) का उपयोग किया जाना चाहिए। यदि आपका प्रश्न केवल एक विशिष्ट DBMS (विशिष्ट एक्सटेंशन / सुविधाओं का उपयोग करता है) से संबंधित है, तो इसके बजाय उस DBMS के टैग का उपयोग करें। एसक्यूएल के साथ टैग किए गए सवालों के जवाब में आईएसओ / आईईसी मानक एसक्यूएल का उपयोग करना चाहिए।