2013-02-12 61 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