2013-02-12 137 views
1

嗨我想在下面的某些條件選擇查詢基地。我該如何實現?mySQL中的條件查詢

if var1>var2 then 

SELECT * from table1; 
ELSE 
SELECT * from table2; 
end if 

在此先感謝。

+0

'var *'是外部分配的變量嗎?或從桌子上取出? – hjpotter92 2013-02-12 09:21:08

+1

兩個表都有相同的模式? – danihp 2013-02-12 09:24:15

回答

1

創建這個STORED PROCEDURE

DELIMITER $$ 
CREATE PROCEDURE procName(IN _val1 INT, IN _val2 INT) 
BEGIN 
    IF _var1 > _var2 THEN 
     SELECT * from table1; 
    ELSE 
     SELECT * from table2; 
    END IF; 
END $$ 
DELIMITER ; 

,當你打電話的過程中,

CALL procName(1,2) 
+0

謝謝。但我只限於查詢。我無法創建商店過程。此外,我想要一些插入語句在其他條件,並希望返回新插入的記錄。 – hemant 2013-02-12 09:30:59

0

像這樣的事情?

SELECT * from table1 WHERE var1>var2 
UNION ALL 
SELECT * from table2 WHERE var1<=var2 

編輯:基於您的評論,也許你需要這樣的查詢:

SELECT Column1, Column2, Column3 
FROM (
    SELECT 1 as Tab, Column1, Column2, Column3 
    FROM Table1 
    UNION ALL 
    SELECT 0 as Tab, 'Value1', 'Value2', 'Value3' 
) s 
WHERE Tab = ((SELECT COUNT(*) FROM Table1)>10) 

這將從table1中返回所有行,如果有超過10行,否則它會返回一個行(不存在於數據庫中)否則。

+0

只有當兩個表具有相同的架構...問OP和等待迴應;) – danihp 2013-02-12 09:48:03

+0

@danihp是的,他們需要有相同的架構,否則它將無法正常工作......另外,還不清楚哪裏這些變量來自:)我們需要一些更多的細節 – fthiella 2013-02-12 09:51:19

+0

嗨,問題陳述是我有一個表,我想要一個表滿足一定條件的記錄,比如說,如果表中有10個相同的記錄,然後返回10條記錄。如果沒有該條件的記錄,則添加一行並返回1條記錄。在var1我從桌子和var2計數是10. – hemant 2013-02-12 12:51:46