मान::
id INT (PK)
data TEXT
मैं एक टेबल बुलाया मान है
मैं यह जांचना चाहता हूं कि तालिका में कोई निश्चित डेटा मौजूद है या नहीं, अगर यह वापस आ गया है, तो यह आईडी है, यदि यह अस्तित्व में नहीं है, तो उसे डालें और इसकी आईडी वापस कर दें।
(बहुत) अनुभवहीन तरीका होगा:
select id from Values where data = "SOME_DATA";
यदि आईडी शून्य नहीं है, बहुत काम यह। यदि आईडी तो रिक्त है:
insert into Values(data) values("SOME_DATA");
और उसके बाद अपने आईडी देख सकते हैं या लौट आए आईडी का उपयोग करने के लिए फिर से उसका चयन करें।
मैं उपरोक्त कार्यक्षमता को एक पंक्ति में बनाने की कोशिश कर रहा हूं। मुझे लगता है कि मैं पास हो रही है, लेकिन मैं अभी तक यह नहीं कर सकता है:
select id from Values where data=(COALESCE((select data from Values where data="SOME_DATA"), (insert into Values(data) values("SOME_DATA"));
मैं इस तथ्य का लाभ लेने के उस दूसरे का चयन अशक्त वापस आ जाएगी कोशिश कर रहा हूँ और: अब तक मैं यह मिल गया तो COALESCE को दूसरा तर्क वापस कर दिया जाएगा। अब तक कोई सफलता नहीं है। मैं क्या खो रहा हूँ?
अनुस्मारक, यह एक वर्ग 3 इंजन है! : पी
धन्यवाद!
MySQL टैग क्यों? –
बहुत सारी समानताएं हैं, शायद उत्तर MySQL थ्रेड से आएगा: पी – user1782427
जो व्यवहार आप चाहते हैं वह विक्रेता-विशिष्ट है। कुछ विक्रेता सम्मिलित/अद्यतन आदेशों से सम्मिलित/हटाए गए मान वापस करने का एक तरीका प्रदान करते हैं। उदाहरण के लिए, SQL सर्वर में आप लॉकिंग के बिना OUTPUT क्लॉज का उपयोग करके एक नई आईडी आउटपुट कर सकते हैं, जबकि MySQL में LAST_INSERT_ID है जो पिछले ऑटो-जेनरेट आईडी –