首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在SQL中使用Case

在SQL中使用Case
EN

Stack Overflow用户
提问于 2013-11-06 06:30:18
回答 1查看 578关注 0票数 0

我的sql表如下所示

代码语言:javascript
复制
posts-> id  postedby   timestamp
        1     1        12716826

comments-> id     postid     comby     tstamp      condition
            1       1           1         12716826      me
            2       1           1         12716826      all
            1       1           2         12716826      me
            1       1           3         12716826      all

我的问题是,当我提出一个查询来获取post 1的所有评论时。我想要以下条件

带有条件me的评论应该只对我或帖子所有者可见。

我做了一个类似于$myid=2;$postbyid=1的查询;

代码语言:javascript
复制
$res=$db->query("SELECT * from comments where postid='$postbyid' 
                order by tstamp desc");
while ($row=$res->fetch_assoc())
{
if($row['comby']==$uid || $row['comby']=='$postbyid')
{
$data[]=$row;
}

else
{

if($row['condition']!='me')
{
$data[]=$row;
}
}
}

这可能是错的。有使用SQL CASE的方法吗?

喜欢

代码语言:javascript
复制
 SELECT * from comments where postid='$postbyid' CASE WHEN comby='$myid' 
THEN SHOW ALL WHEN combyid='$postbyid' THEN SHOW ALL else dont 
show this row order by tstamp desc
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-06 07:23:52

您只需调整查询条件:

代码语言:javascript
复制
  SELECT *
    FROM comments
   WHERE postid = '$postbyid'
     AND comby IN ('$myid', '$postbyid')
ORDER BY tstamp DESC

我没有从condition字段中得到您想要的内容,但是从该查询中您可以添加另一个AND条件来满足可见性限制。

请注意,您的代码容易受到SQL注入攻击,似乎您正在使用mysqli模块处理数据库,因此请看mysqli手册的准备语句部分:http://www.php.net/manual/en/mysqli.quickstart.prepared-statements.php

祝好运!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19805541

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档