MySQL支持“IF EXISTS”吗?

时间:2012-07-10 08:27:44

标签: mysql syntax if-statement exists

我认为我对SQL Server和MySQL的了解存在冲突 当我运行这个查询时,我总是从MySQL得到一个错误:

If EXISTS (select * from tbl_admin) THEN
    select 'OK';
END IF;

错误消息是:

  

[Err] 1064 - 您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在'if EXISTS(select * from tbl_admin)附近使用正确的语法,然后选择'1'    - 在第1行选择'1'WHERE EXISTS'

请帮助我,告诉我写这个查询我错了吗?怎么了?
如果我在tbl_admin表中有某些内容,我想做点什么。

7 个答案:

答案 0 :(得分:3)

select 'ok'
from INFORMATION_SCHEMA.tables
where table_name = 'tbl_admin'

修改

要检查表格是否包含数据,您可以执行以下操作:

SELECT 'OK' FROM dual
WHERE EXISTS (SELECT * FROM tbl_admin);

答案 1 :(得分:1)

如果我理解正确,你知道有一张桌子,如果有任何行你只需要一个信息吗? 在这种情况下,我认为这可以解决您的问题:

SELECT 
    'OK'
FROM
    Korisnik
WHERE
    EXISTS( SELECT 
            COUNT(*)
        FROM
            Korisnik)
LIMIT 1;

您可以使用IF EXISTS检查存储过程或触发器是否存在。在SELECT查询中,您可以使用WHERE EXISTSWHERE NOT EXISTS

http://dev.mysql.com/doc/refman/5.5/en/exists-and-not-exists-subqueries.html

答案 2 :(得分:1)

您可以执行以下操作:

if ( (select count(*) from tbl_admin) > 0) then
    ...

这会计算表中的所有行。如果没有行,则返回0.

答案 3 :(得分:0)

select if(count(*), 'OK', '') as result from table_name where 1

这将打印" OK"如果有记录存在,则不会显示任何内容。

答案 4 :(得分:0)

select case when count(*) > 0 then 'OK' else 'Empty' end from tbl_admin;

OR

select 'OK' from tbl_admin having count(*) > 0;

答案 5 :(得分:0)

如果你想检查表的存在,那么使用这个

 select 'Message' from INFORMATION_SCHEMA.tables where table_name = 'tbl_admin'

因为所有信息都存储在这里.EXISTS在mysql中也可以正常工作。

答案 6 :(得分:-1)

使用普通选择查询..

Select 'OK' from table