का उपयोग कर प्रकार json [] की समानता ऑपरेटर की पहचान:सके जब मैं एक एकल तालिका एक <code>UNION</code> नियम</p> <p>का उपयोग कर रहा है दो तालिकाओं पर कई प्रश्न करने के लिए कोशिश कर रहा हूँ यूनिअन
- परियोजना (आईडी, नाम, पिन किए गए बूलियन)
- कौशल (परियोजनाओं के लिए M2M)
मैं पहली बार जोको pinned
सेट है पंक्तियों की एक सरणी प्राप्त करने के लिए देख रहा हूँऔर भरने नवीनतम प्रविष्टियों के साथ शेष
SELECT
project.id AS project_id,
project.name AS project_name,
array_agg(json_build_object('skill_id', project_skills.id,'name', project_skills.skill)) AS skills
from project
LEFT OUTER JOIN project_skills on project.name = project_skills.project
WHERE project.pinned = true
GROUP BY project_id,project_name
UNION
SELECT
project.id AS project_id,
project.name AS project_name,
array_agg(json_build_object('skill_id', project_skills.id,'name', project_skills.skill)) AS skills
from project
LEFT OUTER JOIN project_skills on project.name = project_skills.project
WHERE project.id != 1 AND project.pinned = false
GROUP BY project_id,project_name
ORDER BY project.create_date DESC LIMIT 5
जब यह पूछताछ (pinned
सेट false
करने के लिए), मैं नीचे त्रुटि मिलती है
ERROR: could not identify an equality operator for type json[] LINE 7: array_agg(json_build_object('skill_id', project_skills.id,...
मुझे यह समझ में नहीं आता त्रुटि। क्या यह असफल रहा है क्योंकि यह दोनों परिणामों से जेसन कॉलम की तुलना करने की कोशिश कर रहा है?
मैं पोस्टग्रेस 9.4 का उपयोग कर रहा हूं।
@ कंकका से अधिक सहायक था: यदि 'यूनियन' की आवश्यकता है * * एक विकल्प 'jsonb' पर डालना है (या सरणी को' jsonb [] 'के अनुसार डालना), जिसके लिए समानता ऑपरेटर परिभाषित किया गया है। देखें: http://stackoverflow.com/a/24296054/939860 या http://stackoverflow.com/a/30520760/939860। (हालांकि, आप मूल प्रारूप खो देते हैं, हालांकि - जो आमतौर पर अप्रासंगिक है।) –
एक ही समस्या थी और मैंने समूह में दोनों को ':: टेक्स्ट' का उपयोग करके टेक्स्ट में मूल्य का चयन करके चयन में आसानी से तुलना करने के लिए चुना। एक स्तर पर विचारों के पदानुक्रम का निर्माण कर रहा था, जब मैं ':: जेसन []' के साथ जरूरी था तो मैं बस जेसन पर वापस आ गया। पीजी 9.6 का उपयोग करना। –