簡體   English   中英

mysql if 條件下執行語句

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM