如果在sql查询中有条件

时间:2015-06-04 10:33:57

标签: mysql if-statement

以下是我存储过程的一部分,我用它来从我的数据库中提取数据。

查询

BEGIN

SET @sqlstring = CONCAT("SELECT b.ID, c.name, c.accountID,, b.total_logs, a.time_start, a.time_end ,COUNT(a.id) AS number_of_users
FROM    ",logtable," a INNER JOIN users b on a.ID = b.ID INNER JOIN accounts c on b.accountID = c.accountID
GROUP BY ID;");
    PREPARE stmt FROM @sqlstring;
    EXECUTE stmt;

END

有时在db中,logtable(table is passed in a variable like logtable_1, logtable_2 .... )可能不存在,当前缺少perticuler表时崩溃并抛出错误,因为a.time_start,a.time_end不能有没有日志表的值。< / p>

但我想要的只是在值NULL上分配a.time_start, a.time_end而不会抛出错误,

所以任何身体都可以告诉我有没有办法像

那样修改这段代码
BEGIN

if logtable exists
   \\ the query

else
   \\ the query

END

1 个答案:

答案 0 :(得分:0)

通过查询information_schema.tables查找表的存在。如果它返回一个等于1的计数,那么您可以继续在表上执行查询。否则请使用Else阻止。

示例

declare table_exists int default 0;

select count(1) into table_exists 
  from information_schema.tables
 where table_schema='your_table_schema_name'
   and table_name = 'your_table_name';

if table_exists then
  -- do something
else
  -- do something else
end if;