社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  DATABASE

mysql连接表,即使条件失败[重复]

T Pos • 5 年前 • 1198 次点击  

我有一个查询,它获取在某个日期范围内联机的所有用户。这是通过in查询完成的,因为我想显示数据。但是,如果找不到解析为in条件的id的记录,我希望返回默认值。

简化查询:

SELECT users.Name, users.ID, SUM(users.Minutes) AS MinutesOnline
     FROM UserTable
     LEFT JOIN OnlineUseage ON OnlineUseage.ID = UserTable.ID
     WHERE OnlineUseage.Date >= '2016-01-01 00:00:00' AND OnlineUseage.Date <= '2016-12-31 23:59:59'
     AND UserTable.ID IN(332,554,5764,11,556,.........)
     GROUP BY users.ID
     ORDER BY FIELD(UserTable.ID, 332,554,5764,11,556,.........)

现在,上面的查询将只拉入那些符合条件的行,如预期的那样。我还希望查询为不符合条件的in条件中的id引入一个默认值。

使用 IFNULL 在这种情况下,将无法工作,因为记录从未返回

SELECT users.Name, users.ID, IFNULL(SUM(users.Minutes), 0) AS MinutesOnline
     FROM UserTable
     LEFT JOIN OnlineUseage ON OnlineUseage.ID = UserTable.ID
     WHERE OnlineUseage.Date >= '2016-01-01 00:00:00' AND OnlineUseage.Date <= '2016-12-31 23:59:59'
     AND UserTable.ID IN(332,554,5764,11,556,.........)
     GROUP BY users.ID
     ORDER BY FIELD(UserTable.ID, 332,554,5764,11,556,.........)

仅供参考-我正在将此查询解析为自定义PDO函数。我没有使用不推荐的mysql函数

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/40641
 
1198 次点击  
文章 [ 2 ]  |  最新文章 5 年前