如果通过mongo驱动程序运行以下查询,则使用现有数据集获得3个结果
SELECT a1.ACTIVITY,
a1.START_TIME,
a1.END_TIME,
FROM ACTIVITIES a1
INNER JOIN (SELECT MAX(ai._ID)
AS maxid
FROM ACTIVITIES ai
WHERE ai.activity = 'writing'
GROUP BY ai.ACTIVITY_CONTAINER_ID) a2 ON (a2.maxid = a1._ID)
LEFT JOIN PROJECT_TASKS pt ON a1.ACTIVITY_CONTAINER_ID = pt._ID
LEFT JOIN USERS u ON a1.ACTOR_ID = u._ID
LEFT JOIN PROJECTS p ON pt.PROJECT_ID = p._ID
如果然后将OR ai.activity = 'editing'
添加到内部选择中,则只得到1个结果。如何将此或条件添加到内部选择中,减少结果的数量
SELECT a1.ACTIVITY,
a1.START_TIME,
a1.END_TIME,
FROM ACTIVITIES a1
INNER JOIN (SELECT MAX(ai._ID)
AS maxid
FROM ACTIVITIES ai
WHERE ai.activity = 'writing'
OR ai.activity = 'editing'
GROUP BY ai.ACTIVITY_CONTAINER_ID) a2 ON (a2.maxid = a1._ID)
LEFT JOIN PROJECT_TASKS pt ON a1.ACTIVITY_CONTAINER_ID = pt._ID
LEFT JOIN USERS u ON a1.ACTOR_ID = u._ID
LEFT JOIN PROJECTS p ON pt.PROJECT_ID = p._ID
发布于 2016-04-20 06:08:10
最后,我使用了类似于下面的查询,从我收集到的内容来看,它做同样的事情,但速度更慢。我怀疑我看到的错误是由于一个mongo驱动程序的奇怪行为,我传递的查询将它们转换为mongo查询语言。我更新了这个问题,使它更有用。
SELECT
a1.ACTIVITY,
a1.START_TIME,
a1.END_TIME,
FROM ACTIVITIES a1
INNER JOIN (
SELECT MAX(ai._ID) as maxid
FROM ACTIVITIES ai
WHERE ai.ACTIVITY = 'writing'
GROUP BY ai.ACTIVITY_CONTAINER_ID
UNION ALL
SELECT MAX(ai._ID) as maxid
FROM ACTIVITIES ai
WHERE ai.ACTIVITY = 'editing'
GROUP BY ai.ACTIVITY_CONTAINER_ID) as a2
ON (a2.maxid = a1._ID)
LEFT JOIN PROJECT_TASKS pt
ON a1.ACTIVITY_CONTAINER_ID = pt._ID
LEFT JOIN USERS u
ON a1.ACTOR_ID = u._ID
LEFT JOIN PROJECTS p
ON pt.PROJECT_ID = p._ID
https://stackoverflow.com/questions/36320271
复制相似问题