SQLite LEFT JOIN结合WHERE子句查询未返回预期结果的问题求助
SQLite LEFT JOIN结合WHERE子句查询未返回预期结果的问题求助
各位好,我在SQLite里使用LEFT JOIN搭配WHERE子句做查询时遇到了麻烦,怎么都得不到想要的结果,想请教大家帮忙排查问题🙏
我有两张表:contents和actions,需求是返回所有关联内容创建日期在指定区间内的动作记录——也就是只要某个内容的创建日期在日期A和B之间,它对应的所有动作都应该被查询出来。
表结构与示例数据
Contents表
| content_id | creation_date | content |
|---|---|---|
| 1 | 2023-01-02 | A |
| 2 | 2022-12-11 | B |
| 3 | 2022-12-31 | C |
| 4 | 2023-01-07 | D |
| 5 | 2023-01-22 | E |
Actions表
| action_id | Action | content_id |
|---|---|---|
| 1 | CLICK | 2 |
| 2 | CLICK | 1 |
| 3 | SEND | 1 |
| 4 | SEND | 1 |
| 5 | CLICK | 3 |
| 6 | SEND | 4 |
| 7 | SEND | 4 |
| 8 | CLICK | 3 |
| 9 | CLICK | 5 |
我写的查询语句
SELECT c.content_id, c.creation_date, c.content, a.action_id, a.action FROM content c LEFT JOIN actions a ON a.content_id = c.content_id WHERE c.creation_date BETWEEN '2023-01-01' AND '2023-01-30' GROUP BY a.action_id
预期结果与实际结果
我原本期望得到的结果是这样的:
| content_id | creation_date | content | action_id | action |
|---|---|---|---|---|
| 1 | 2023-01-02 | A | 2 | CLICK |
| 1 | 2023-01-02 | A | 3 | SEND |
| 1 | 2023-01-02 | A | 4 | SEND |
| 4 | 2023-01-07 | D | 6 | SEND |
| 4 | 2023-01-07 | D | 7 | SEND |
| 5 | 2023-01-22 | E | 9 | CLICK |
但实际运行后,只返回了每个符合日期条件的内容对应的第一条动作记录,而不是所有关联的动作。奇怪的是,如果我去掉WHERE子句,就能正常获取所有动作记录。
请问我是不是哪里考虑不周或者语法写错了?
备注:内容来源于stack exchange,提问作者Bill Dukelow
相关产品推荐
相关产品推荐

