假设我有 2 个相关的表。第一个名为 a,具有以下列:
activityid
subject
date
第二个,名为 b 有这些列
activityid
crmid
activityid
就是 a 和 b 的关系。
我需要检查重复值,即在表 b 上具有相同 crmid 的多个值。使用以下查询:
SELECT y.activityid, y.subject
FROM vtiger_activity y
INNER JOIN (SELECT DISTINCT a.activityid, a.crmid
FROM vtiger_seactivityrel a, vtiger_seactivityrel b
WHERE a.crmid = b.crmid
AND a.activityid != b.activityid) z
ON y.activityid = z.activityid
我可以成功地得到所有这些。现在我想获得所有activityid
相同的值之间的最高值crmid
。为了更好地解释,如果我有 3 行 crmid = 20 和 4 行 crmid = 21,我想要 crm = 20 的最高活动 ID,但也需要 crmid = 21 的最高活动 ID。以下:
SELECT y.activityid, y.subject
FROM vtiger_activity y
INNER JOIN (SELECT DISTINCT a.activityid, a.crmid
FROM vtiger_seactivityrel a, vtiger_seactivityrel b
WHERE a.crmid = b.crmid
AND a.activityid != b.activityid) z
ON y.activityid = z.activityid
WHERE y.activityid = (SELECT MAX(activityid)
FROM (SELECT y.activityid, y.subject
FROM vtiger_activity y
INNER JOIN (SELECT DISTINCT a.activityid, a.crmid
FROM vtiger_seactivityrel a, vtiger_seactivityrel b
WHERE a.crmid = b.crmid AND a.activityid != b.activityid) z
ON y.activityid = z.activityid) t)
只能给我总体上最高的activityid。另外,我想删除所有重复项,但activityid
. 执行这些任务的正确查询应该是什么?谢谢任何人。
对于那些想知道它是什么的人,它是 vtigercrm。