को प्रतिस्थापित करें मेरे पास mysql क्वेरी है जहां मुझे WHERE खंड में मान को प्रतिस्थापित करने की आवश्यकता है यदि subquery कोई परिणाम या शून्य मान देता है। जो आवश्यकMySQL जांच करें कि क्या सबक्वायरी वापस शून्य है, फिर मान
चलाता है के रूप में काम करता है
मूल्य क्वेरी सफलतापूर्वक
SELECT `prices` FROM `pricing`
WHERE (3 BETWEEN `from_unit` AND `to_unit`)
AND `type` = 1
AND `id_pricing` IN
(
SELECT v1.`id_pricing` FROM `values` AS v1
INNER JOIN `values` AS v2 ON v1.`id_pricing` = v2.`id_pricing`
INNER JOIN `values` AS v3 ON v1.`id_pricing` = v3.`id_pricing`
INNER JOIN `values` AS v4 ON v1.`id_pricing` = v4.`id_pricing`
WHERE v1.`id_attribute` = 1 AND v1.`id_value` = 1
AND v2.`id_attribute` = 7 AND v2.`id_value` = 63
AND v3.`id_attribute` = 8 AND v3.`id_value` = 87
AND v4.`id_attribute` = 12 AND v4.`id_value` = 143
)
जब मैं नीचे के रूप में इस क्वेरी को संशोधित, में खंड के अंदर सबक्वेरी पर IFNULL जाँच जोड़ने, यह त्रुटि फेंकता
'एसक्यूएल त्रुटि (1242): सबक्वायरी 1 से अधिक पंक्ति'
SELECT `prices` FROM `pricing`
WHERE (3 BETWEEN `from_unit` AND `to_unit`)
AND `type` = 1
AND `id_pricing` IN
( IFNULL (
( SELECT v1.`id_pricing` FROM `values` AS v1
INNER JOIN `values` AS v2 ON v1.`id_pricing` = v2.`id_pricing`
INNER JOIN `values` AS v3 ON v1.`id_pricing` = v3.`id_pricing`
INNER JOIN `values` AS v4 ON v1.`id_pricing` = v4.`id_pricing`
WHERE v1.`id_attribute` = 1 AND v1.`id_value` = 1
AND v2.`id_attribute` = 7 AND v2.`id_value` = 63
AND v3.`id_attribute` = 8 AND v3.`id_value` = 87
AND v4.`id_attribute` = 12 AND v4.`id_value` = 143
),
'1234'
)
)
मैंने अभी भी एक ही परिणाम के साथ IFNULL को बदलने की कोशिश की। क्या मैं गलत वाक्यविन्यास का उपयोग कर रहा हूँ।
क्यों 'चयन IFNULL (v1.id_pricing, '1234')' में नहीं सबक्वेरी? –
यहां समाधान के साथ एक ही समस्या है: http://stackoverflow.com/questions/9861171/how-to-resolve-this-in-mysql-1242-subquery-returns-more-than-1-row – Gimmy
मैं ' मैं उस सबक्वायरी द्वारा उलझन में हूँ। यह क्या करना चाहिए? प्रदर्शन के माध्यम से एक sqlfiddle प्रदान करने पर विचार करें – Strawberry