क्या एक खंड को अस्वीकार करना संभव है?एसक्यूएल कहां स्थित है, बराबर नहीं है?
उदा।
DELETE * FROM table WHERE id != 2;
क्या एक खंड को अस्वीकार करना संभव है?एसक्यूएल कहां स्थित है, बराबर नहीं है?
उदा।
DELETE * FROM table WHERE id != 2;
आप इस
DELETE FROM table WHERE id NOT IN (2)
या
DELETE FROM table WHERE id <> 2
के रूप में की तरह कर सकते हैं @ फ्रैंक श्मिट ने नोट किया, आप भी नल मूल्यों के बारे में सावधान रहना चाहेंगे। अगर आप 2
(एनयूएलएल समेत) को हटाना चाहते हैं तो WHERE क्लॉज में OR id IS NULL
जोड़ें।
मैंने इस आदेश को दो बार कोशिश की .. लेकिन यह तब तक काम नहीं कर रहा जब तक मुझे एहसास नहीं हुआ कि MySQL में DELETE * .. –
का उपयोग नहीं करता है लेकिन बिना * यह अच्छी तरह से काम करता है। धन्यवाद –
वहां आप जाते हैं, * बाहर निकलने के लिए धन्यवाद * को हटाने के लिए उत्तर संपादित किया। – Lobo
delete from table where id <> 2
संपादित करें: MySQL
कहां से खंडित करने के लिए <>
का उपयोग करें।
आप कर सकता है निम्नलिखित:
DELETE * FROM table WHERE NOT(id = 2);
अच्छी तरह से काम करता है यदि मान संख्यात्मक नहीं है जहां नहीं (id = 'two'); – Kareem
WHERE id <> 2
काम करना चाहिए ठीक ... है कि आप के बाद क्या कर रहे हैं?
हां। अगर स्मृति मुझे सेवा देती है, तो उसे काम करना चाहिए। हमारे आप इस्तेमाल कर सकते हैं:
DELETE FROM table WHERE id <> 2
औपचारिक तर्क और बीजगणित के लिए वापस देखो।
A & B & (D | E)
की तरह एक अभिव्यक्ति के तरीके के एक जोड़े में नकार दिया जा सकता है:
स्पष्ट तरीका:
!(A & B & (D | E))
ऊपर भी फिर से बताने से किया जा सकता है, तो आप सिर्फ याद रखने की आवश्यकता तार्किक अभिव्यक्तियों के कुछ गुण:
!(A & B)
(!A | !B)
के समतुल्य है।!(A | B)
(!A & !B)
के बराबर है।!(!A)
(ए) के बराबर है।जो करने के लिए इसे लागू होता है पूरे अभिव्यक्ति भर में वितरित नहीं, ऑपरेटरों inverting और डबल नकारात्मक को नष्ट करने के रूप में आप साथ जाने (!):
!A | !B | (!D & !E)
तो, सामान्य रूप में, किसी भी जहां उपरोक्त नियमों के अनुसार धारा को अस्वीकार कर दिया जा सकता है।इस
select *
from foo
where test-1
and test-2
and ( test-3
OR test-4
)
का निषेध
select *
from foo
where NOT( test-1
and test-2
and ( test-3
OR test-4
)
)
या
select *
from foo
where not test-1
OR not test-2
OR ( not test-3
and not test-4
)
कौन सा बेहतर है? यह एक बहुत ही संदर्भ-संवेदनशील प्रश्न है। केवल आप ही तय कर सकते हैं।
हालांकि, जागरूक रहें कि ऑप्टिमाइज़र क्या कर सकता है या नहीं कर सकता है। आपको इष्टतम क्वेरी प्लान से कम मिल सकता है।
आपका प्रश्न पहले से ही अन्य पोस्टर द्वारा उत्तर दिया था, मैं सिर्फ करते रहे कि
delete from table where id <> 2
(या वेरिएंट उसके नहीं आईडी = 2 आदि) पंक्तियां नहीं हटा जाएगा जहां आईडी शून्य है चाहते हैं।
आप भी आईडी = शून्य के साथ हुई पंक्तियां हटाना चाहते हैं:
delete from table where id <> 2 or id is NULL
मैं सिर्फ इस समस्या को हल किया गया था। यदि आप <> का उपयोग करते हैं या एक चर पर नहीं हैं, तो यह शून्य है, इसका परिणाम गलत होगा। तो <> 1 के बजाय, आप इसे इस तरह की जांच करना चाहिए:
AND (isdelete is NULL or isdelete = 0)
FYI करें, 'आईडी = NULL' करता है ** नहीं ** काम के रूप में आप उम्मीद थी। –