在这种情况下我应该使用哪个SQL查询

时间:2013-03-03 08:32:13

标签: mysql sql algorithm tsql

我在MySQL中有一个表tbl_comments。表格中有四个字段user_namecomment_iduser_likesuser_dislikesuser_likesuser_dislikes字段的类型为VARCHAR,这两个字段中有逗号分隔的user_names。

我有以下查询:

$query = "SELECT * FROM tbl_comments WHERE comment_id=223";

我的问题是我也想通过此查询传递user_name并获得以下输出

1.  0 (if user_name does not exist in user_likes and user_dislikes)
2.  1 (if user_name exists in user_likes)
3.  2 (if user_name exists in user_dislikes)

哪个SQL查询可以提供我想要的结果?

2 个答案:

答案 0 :(得分:0)

我猜你正在使用SQL Server:

SELECT *, 
CASE 
WHEN (if user_name does not exist in user_likes and user_dislikes) THEN O
WHEN (if user_name exists in user_likes) THEN 1
WHEN (if user_name exists in user_dislikes) THEN 2
END
FROM tbl_comments WHERE comment_id=223

这大致是你需要的。请根据您的使用情况更改 WHEN 内的条件。 但我不明白用户是什么'并且'用户不喜欢'实际上,以及为什么逗号分隔的用户名?因此条件保持不变。

答案 1 :(得分:0)

我在自己面前使用逗号分隔值的陷阱。这是关于这个主题的一个很好的答案:Is storing a delimited list in a database colum really that bad?

您必须使用LIKE'%user_name%',从效率的角度来看,这并不好。尝试研究数据库规范化。

(我在Stackoverflow上的第一篇文章:))