繁体   English   中英

sql语句中的多个where子句?

[英]Multiple where clause in sql statement?

我有一个简单的sessions表,如下所示:

   sid  watchtime
    1   01:07:00
    2   01:07:00
    3   01:34:00
    4   01:36:00
    5   01:36:00
    6   01:59:00
    7   01:59:00
    8   00:00:00
    9   00:00:00
    10  03:42:00
    11  00:16:00
    12  00:49:00
    13  00:55:00
    14  00:00:00
    15  00:05:00
    16  00:05:00

现在,我想显示观看时间>=5和观看时间<5计数。 我尝试了以下解决方案:

SELECT count(watchtime) as lessthan_five FROM sessions 
WHERE watchtime <=5 
AND count(watchtime) as morethan_five 
         from sessions WHERE watchtime >5";

我收到以下错误:

1064-您的SQL语法有误; 检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以在第1行“在WHERE观看时间> = 5”的会话中使用“大于”

我的代码在做什么错?

您可以使用条件聚合来获得所需的结果,这是通过在数字上下文中使用MySQL将布尔值视为1或0来实现的:

SELECT SUM(watchtime <= '00:05:00') AS lessthan_five,
       SUM(watchtime >  '00:05:00') AS morethan_five
FROM sessions

输出:

lessthan_five   morethan_five
5               11

dbfiddle上的演示

如果您希望行的值超过五分钟,请执行以下操作:

SELECT COUNT(*) FROM sessions WHERE watchtime >= '00:05:00'
SELECT COUNT(*) FROM sessions WHERE watchtime < '00:05:00'

如果要获取小时数以外的分钟数的行数:

SELECT COUNT(*) FROM sessions WHERE MINUTE(watchtime) >= 5
SELECT COUNT(*) FROM sessions WHERE MINUTE(watchtime) < 5

同样,这将为您提供所有观看时间的计数,其中计数<> 5:

SELECT watchtime, COUNT(*) as Num
FROM sessions 
GROUP BY watchtime
HAVING COUNT(*) <> 5

您可以根据需要编辑子句。

你可以试试这个

   SELECT watchtime, count(watchtime) as lessthan_five FROM sessions 
   WHERE watchtime <=5 
   AND watchtime in ( select watchtime as morethan_five 
     from sessions group by `category_id` having `watchtime` >5);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM