【发布时间】:2021-09-16 02:37:18
【问题描述】:
我有一个名为activities 的表,其中包括不同类型的活动,其中一些是相关的。 A 类型的每个活动都与B 类型的活动匹配,为简单起见,我们假设没有丢失数据。到目前为止,设置与this question 非常相似。
每个活动都有几列,包括activity_type、related_activity_id 和location_id。我可以很容易地查询这些对:
SELECT
A.location_id as 'A location id',
B.location_id as 'B location id'
FROM (SELECT * FROM activities WHERE `activities`.`activity_type` IN ('Activities::A') AND (`activities`.`related_activity_id` IS NOT NULL)) AS A
INNER JOIN (SELECT * FROM activities WHERE `activities`.`activity_type` IN ('Activities::B') AND (`activities`.`related_activity_id` IS NOT NULL)) AS B
ON A.related_act_id = B.id;
问题是当我想找到不匹配的对时,即A的位置与B的位置不匹配的对。我尝试过使用
WHERE A_location_id <> B_location_id
但它无法识别列:
错误代码:1054。“where”中的未知列“A_location_id” 子句' 0.734 秒
我不情愿地将where子句转换为:
WHERE A.location_id <> B.location_id
但是现在查询非常长,并且 MySQL 工作台窒息,最终杀死了查询:
错误代码:2013。在查询期间丢失与 MySQL 服务器的连接
我尝试过使用更长的超时查询,但它没有一点帮助。关于如何解决这个问题的任何想法?
【问题讨论】:
标签: mysql