我试图在每个用户唯一的日期/时间之前返回所有用户的所有数据。MySQL多行子查询修复程序
我可以返回每个用户的确切日期的所有数据,没问题,但我不知道如何扩展我的查询以返回日期小于或等于我的关键日期。
我有一个2表SQL数据库。
表1-“销售”具有所有交易的确认记录。
- USER_ID(日期,然后各种购买信息)
表2 - “的user_data” 具有所有浏览数据的记录
- USER_ID,record_date,purchase_made(purchase_made是误称,因为他们触发了购买弹出窗口,但可能没有实际购买 - 然后是一大堆用户操作数据)
我需要获取所有已购买的用户的user_data记录,并包括他们的初始购买。
为了得到确切的购买记录,我可以使用以下命令:
SELECT *
FROM user_data
WHERE user_id IN (SELECT user_id FROM sales)
AND record_date IN (SELECT min(record_date) FROM user_data WHERE purchase_made = 1 GROUP BY user_id);
现在我真正想要的是能够改变的是第二个“IN”为“< =”但我可以”用一个返回多于一行的子查询来做到这一点。
免责声明 - 我没有写的数据库,我没有权限更改数据库(我也不会是这样做的正确的人)
免责声明2 - 我知道,使用purchase_made会略微增加结果,因为不是所有这些都是购买。但由于报告的原因,销售表的日期可能会有足够的时间,因此实际上LESS的可靠性低于使用与purchase_made相关的时间戳(通过在实际数据集上运行的广泛查询比较得到验证)。但是,上面的任务是没关系,他们会对“大部分”准确而感到满意。
我对刚刚发生的事情了解甚少。但我想我喜欢它。我非常肯定,这个工作非常完美,你给了我一些研究的东西。谢谢Q! – Dulock
@杜洛克提问如果你不明白。如果这是你必须维护的东西,或者你正在开发工作,那么这种概念的知识将帮助你! – xQbert