Walaupun klausa IF EXISTS MySQL popular, persoalan timbul mengenai pelaksanaannya yang betul. Artikel ini meneroka isu biasa di mana kedua-dua pertanyaan yang diberikan mengembalikan mesej ralat.
Sebab utama ralat ini terletak pada percubaan untuk menggunakan blok kawalan IF di luar fungsi. Had ini memberi kesan kepada kedua-dua pertanyaan:
IF EXISTS (SELECT * FROM gdata_calendars WHERE `group` = ? AND id = ?) SELECT 1 ELSE SELECT 0
dan
IF ((SELECT COUNT(*) FROM gdata_calendars WHERE `group` = ? AND id = ?) > 0) SELECT 1 ELSE SELECT 0
Untuk menyelesaikan isu, tukar klausa EXISTS kepada subkueri dalam fungsi IF :
SELECT IF(EXISTS( SELECT * FROM gdata_calendars WHERE `group` = ? AND id = ?), 1, 0)
Selain itu, boolean dikembalikan sebagai 1 atau 0, jadi pertanyaan berikut sudah memadai:
SELECT EXISTS( SELECT * FROM gdata_calendars WHERE `group` = ? AND id = ?)
Atas ialah kandungan terperinci MySQL JIKA WUJUD Klausa: Mengapa Pertanyaan Saya Ralat Keluar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!