求教 mysql中if exists 的用法

zzcoffeebean 2012-10-31 07:20:13
需求是这样的,我需要扩展表,增加一列point,增加前我需要先判断是否存在该列,若不存在则添加列,反之则不做任何操作
我的sql语句总是报错,而括号中的语句是可以执行的
IF exists(select  column_name from information_schema.columns where table_schema='test' and table_name='t_user' and column_name='point' ) 
select 'tt';


求教正确写法
...全文
36649 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Maakey 2013-04-10
  • 打赏
  • 举报
回复
解决办法是什么是啊?
zzcoffeebean 2012-11-01
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

MYSQL中不支持匿名块,也就是说这类过程性语句IF,THEN必须放在存储过程中执行。
[/Quote]
这个真让我失望啊~·

结贴了
ACMAIN_CHM 2012-11-01
  • 打赏
  • 举报
回复
MYSQL中不支持匿名块,也就是说这类过程性语句IF,THEN必须放在存储过程中执行。
zzcoffeebean 2012-11-01
  • 打赏
  • 举报
回复
select  @testresult:=count(*) from information_schema.columns where   
table_schema='test' and table_name='t_user' andn column_name='point' ;
select @testresult
if (@testresult='1') then
select 'yes';
end if

到select @testresult 这没问题,但是if语句怎么又报脚本错误呢?? mysql与Sql Server差别很大啊
zzcoffeebean 2012-11-01
  • 打赏
  • 举报
回复
楼上做法是否行得通没在mysql中验证过,但我不想这样用,也不推荐这样的做法,若语句报错,是否会对后面的产生操作产生影响呢
nicenight 2012-11-01
  • 打赏
  • 举报
回复
直接添加列,如果有就会失败,不会添加成功。
这不就行了,还判断做啥,添加操作会自己判断的。
Rotel-刘志东 2012-11-01
  • 打赏
  • 举报
回复
delimiter$$
create procedure gg()
begin
if exists(select column_name from information_schema.columns where
table_schema='test' and table_name='t_user' andn column_name='point')
then
select 'tt';
end if;


end$$
delimiter;

Rotel-刘志东 2012-11-01
  • 打赏
  • 举报
回复
delimiter$$
create procedure gg()
begin
if exists(select column_name from information_schema.columns where
table_schema='test' and table_name='t_user' andn column_name='point')
then
select 'tt';
end if;


end$$
delimiter$$;

wwwwb 2012-11-01
  • 打赏
  • 举报
回复
只能在SP中使用
DELIMITER $$
CREATE PROCEDURE gg()
BEGIN
IF EXISTS(SELECT column_name FROM information_schema.columns WHERE table_schema='test' AND table_name='t_user' AND column_name='point' ) THEN
SELECT 'tt';
END IF;
END$$
DELIMITER ;
zzcoffeebean 2012-10-31
  • 打赏
  • 举报
回复
thanks
ACMAIN_CHM 2012-10-31
  • 打赏
  • 举报
回复
MYSQL中不支持这种语法。 如果是在存储过程中,你可以先返回 select count(*) into x, 然后 IF x>0 再决定是否执行括号中的语句。如果在非存储过程中,则没有办法,只能在自己的程序中判断。

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧