[英]Execute statement in mysql if condition
我在以下查詢中遇到問題。 Eveytime 查詢遇到成功條件,它直接打印語句而不是執行。 我對此感到震驚,我不知道如何解決它。 誰能指導我如何修復以下查詢
SELECT IF(
(SELECT COUNT(*)
FROM INFORMATION_SCHEMA.VIEWS
WHERE table_name = 'user_details'
AND table_schema = 'user_details'
) = 0 AND
(SELECT COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'mobile_consumer'
AND table_schema = DATABASE()
AND column_name IN ('payment_ref', 'pp', 'tt')
) = 3,
"Select * from users_details",
"Select 0"
)
上述查詢的 Sql 輸出顯示為“select * from users_details”,但我想要的是該語句應該執行並顯示表的行。 有什么建議??
我猜你忘了在代碼中使用THEN
子句。 此外,您已經編寫了要在IF
塊中執行的語句,而它應該在THEN
塊中寫入。 另一件事是,您在“”中編寫了查詢,這使它們成為將按原樣打印的簡單字符串,而不是將它們寫成不帶引號,如果您需要將它們與代碼的其余部分隔離,請使用括號。 您更新后的代碼如下所示。
IF
(SELECT COUNT(*)
FROM INFORMATION_SCHEMA.VIEWS
WHERE table_name = 'user_details'
AND table_schema = 'user_details'
) = 0
AND
(SELECT COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'mobile_consumer'
AND table_schema = DATABASE()
AND column_name IN ('payment_ref', 'pp', 'tt')
) = 3
Then
(Select * from users_details)
ELSE
(Select 0)
END IF
或者,如果您有多個語句要針對多個條件執行,您可以嘗試使用 case 語句來評估您的條件。
SELECT
CASE WHEN
count1 = 0 AND count2 = 3
THEN
(Select * from users_details)
ELSE
(Select 0)
END
FROM
(
SELECT
(SELECT COUNT(*) FROM INFORMATION_SCHEMA.VIEWS WHERE table_name = 'user_details' AND table_schema = 'user_details') AS count1,
(SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'mobile_consumer' AND table_schema = DATABASE() AND column_name IN ('payment_ref', 'pp', 'tt')) AS count2
)
AS counts
如果它解決了您的問題,請標記為已接受。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.