2010-07-26 37 views
0

我需要執行一個高度依賴於幾個條件的查詢,需要通過分析其他表中的數據來檢查,基本目標是如果其他表中的所有條件都爲真,則從表中返回行,我厭倦了INNER連接LEFT連接和WHERE語句,我需要查找一個表,如果返回的值是1,0或4或一組值,我需要執行其他語句,並基於我需要執行最後一個聲明,這是我的最終結果。我需要知道如何編寫在MySQL中使用和執行查詢等的IF語句和CASE break語句?

儘可能功能的程序而言,我研究了MySQL文檔像地獄和所有它給了我,這是::

DELIMITER $$ 

CREATE DEFINER=`root`@`localhost` FUNCTION `SimpleCompare`(n INT, m INT) RETURNS varchar(20) CHARSET latin1 
BEGIN 

    DECLARE s VARCHAR(20); 

    IF n > m THEN SET s = '>'; 

    ELSEIF n = m THEN SET s = '='; 

    ELSE SET s = '<'; 

    END IF; 

    SET s = CONCAT(n, ' ', s, ' ', m); 

    RETURN s; 

    END 

現在,這是如此平淡,我不知道從哪裏開始,我在「returns varchar(20)」如果我期待它返回一個10行而不是VARCHAR(20)的表,那麼它需要做些什麼,我該如何聲明「DECLARE s VARCHAR(20);」,如果我希望它是一個表而不是VARCHAR( 20)。

(n > m)後的「IF」怎麼我用我自己的查詢, 我這樣做,「THEN SET s = '>'」如何設置S =查詢結果後更換呢?,這是推動我瘋了語法超出了我的意思,而且文檔沒有解釋任何東西。

在此先感謝

回答

0

據我所知,MySQL不支持表值數據類型。使用您發佈的功能是:

SELECT simplecompare(yt.n, yt.m) AS eval 
    FROM YOUR_TABE yt 

...這將返回:

eval 
-------- 
1 = 1 
2 < 3 
etc. 

SQL是基於設置,這不同於典型的編程(程序或OO)。