如何将IF语句放入MySQL查询中

时间:2009-02-19 06:20:21

标签: mysql

我的查询只是从3个表中选择。

  1. 从评论表中选择文章的所有评论

  2. 从UserID表中选择以查找它是哪种用户

  3. 如果用户是一种类型,请搜索一个表格... ELSE搜索另一个表格以获取最终信息。

  4. 我该怎么做?我对MySQL的东西有点新,所以我非常感谢你的耐心!

    PS - 请告诉我这是不是很清楚...

    谢谢!

2 个答案:

答案 0 :(得分:2)

好的,那么让我们说类型条件是 - 如果用户的类型'foo'搜索表'foovalues'否则搜索表'finalvalues'.... 假设表结构如下

评论    CommentID    用户身份    条款ArticleID

用户    用户身份    用户类型

 Declare TestUserType varchar(3);

 select * from Comments where ArticleID = <inputid>; //Returns the comments 

 select TestUserType = UserType from Users where UserID = <inputuser>; //Returns the usertype for a user and assigns it to a variable

 if TestUserType = 'foo' 
   begin 
    select * from FooValues;
   end
 else
   begin 
    select * from FinalValues;
   end 

免责声明:上述SQL应该可以在mySQL中运行,但是因为我在那个数据库上工作已经有一段时间了,我现在无法访问它,所以上面的SQL可能会遇到语法错误。

你也可以把SQL放在一个存储过程中 - 如果你这样做,mySQL有关于你可能想要注意的分隔符的事情 - 我在博客上写了here

答案 1 :(得分:1)

我不会将它们全部放在一个查询中。如果将操作分解为较小的步骤,则代码更具可读性。

如果不考虑性能,您可以先获取用户类型,然后根据类型运行另一个查询。

要获得更正确的方法,您应该考虑使用存储过程。