0

tbl_comments在 MySQL 中有一个表。表中有user_name, comment_id, user_likes,四个字段user_dislikesuser_likes和字段的user_dislikes类型为 VARCHAR,并且在这两个字段中有逗号分隔的用户名。

我有以下查询:

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

我的问题是我也想通过这个查询传递用户名并获得以下输出

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 查询可以给出我想要的结果?

4

2 回答 2

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内的条件。但我不明白 'user_likes' 和 'user dislikes' 的实际含义,以及为什么用逗号分隔的用户名?所以条件不变。

于 2013-03-03T08:44:37.150 回答
0

我已经采取了在自己之前使用逗号分隔值的陷阱。这是一个很好的答案:在数据库列中存储分隔列表真的那么糟糕吗?

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

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

于 2013-03-03T09:07:55.657 回答