2011-04-03 23 views
47

यहाँ दो बयान है कि मैं काम करना चाहते हैं हैं, लेकिन जो त्रुटि संदेश देते हैं: कर रहे हैं वहाँउपयोग "अगर मौजूद है"

IF EXISTS (SELECT * FROM gdata_calendars WHERE `group` = ? AND id = ?) SELECT 1 ELSE SELECT 0 

और

IF ((SELECT COUNT(*) FROM gdata_calendars WHERE `group` = ? AND id = ?) > 0) SELECT 1 ELSE SELECT 0; 

प्रश्न चिह्न क्योंकि मैं PHP के पीडीओ के साथ parametrized, तैयार, कथन का उपयोग करें। हालांकि, मैंने इसे मैन्युअल रूप से डेटा के साथ निष्पादित करने का भी प्रयास किया है, और यह वास्तव में काम नहीं करता है।

मुझे पता है क्यों उनमें से प्रत्येक के काम नहीं करता है करना चाहते हैं, वहीं मैं पहली बार क्वेरी का उपयोग करने के लिए अगर यह काम करने के लिए बनाया जा सकता है पसंद करेंगे।

+0

हाय यात्रा कर सकते हैं वहाँ है, कि तुम हो रही है त्रुटि संदेश क्या है? – ysrb

+0

उनमें से दोनों के लिए: ERROR 1064 (42000): आपको अपने SQL वाक्यविन्यास में कोई त्रुटि है; –

उत्तर

86

आप कार्यों के बाहर IF नियंत्रण ब्लॉक का उपयोग नहीं कर सकते हैं। तो यह आपके दोनों प्रश्नों को प्रभावित करता है।

मुड़ें

एक सबक्वेरी में खंड मौजूद बजाय एक यदि समारोह

SELECT IF(EXISTS(
      SELECT * 
      FROM gdata_calendars 
      WHERE `group` = ? AND id = ?), 1, 0) 

वास्तव में, बूलियन्स 1 के रूप में या 0

SELECT EXISTS(
     SELECT * 
     FROM gdata_calendars 
     WHERE `group` = ? AND id = ?) 
+4

क्या बूलियन वैल्यू रिटर्न पर एक और क्वेरी निष्पादित करना संभव है? – Sagar

+1

@ रिचर्डथीकिवी 'चयन EXISTS' रिटर्न क्या करता है, 'बूल', मुझे सी ++ में रिकॉर्ड अस्तित्व की जांच करने की आवश्यकता है? – KernelPanic

+0

@RichardTheKiwi सही! – bjesua

-7
if exists(select * from db1.table1 where sno=1) 
begin 
select * from db1.table1 where sno=1 
end 
else if (select * from db2.table1 where sno=1) 
begin 
select * from db2.table1 where sno=1 
end 
else 
begin 
print 'the record does not exits' 
end 
+4

आपको पता है कि प्रश्न mysql से संबंधित है और माइक्रोसॉफ्ट एसक्यूएल सही नहीं है? –

25

मैं RichardTheKiwi उदाहरण पाया लौटा दिया जाता है के भीतर काफी जानकारीपूर्ण

बस एक और दृष्टिकोण की पेशकश करने के लिए आप IF EXISTS (SELECT 1 ..) THEN ...

की तरह कुछ के लिए देख रहे हैं - क्या मैं MSSQL

IF EXISTS (SELECT 1 FROM Table WHERE FieldValue='') 
BEGIN 
    SELECT TableID FROM Table WHERE FieldValue='' 
END 
ELSE 
BEGIN 
    INSERT INTO TABLE(FieldValue) VALUES('') 
    SELECT SCOPE_IDENTITY() AS TableID 
END 

में लिख सकते हैं - MySQL

के लिए
IF (SELECT 1 = 1 FROM Table WHERE FieldValue='') THEN 
BEGIN 
    SELECT TableID FROM Table WHERE FieldValue=''; 
END; 
ELSE 
BEGIN 
    INSERT INTO Table (FieldValue) VALUES(''); 
    SELECT LAST_INSERT_ID() AS TableID; 
END; 
END IF; 
+5

मुझे यहां एक वाक्यविन्यास त्रुटि मिल रही है। –

+0

इस उत्तर का MySQL भाग काम पर प्रकट नहीं होता है। –

0

चयन फिर से लिखा अगर ((group =? और आईडी =?), 1,0); (gdata_calendars से चुनें गिनती (*);

विस्तार से विवरण के लिए आप here

संबंधित मुद्दे