[英]Inner join syntax error in mysql select statement
这是我的MySQL select语句,我正在尝试做一个交集:
SELECT id
FROM
(SELECT id
FROM members WHERE id!=15 AND `last name` = `last name` AND (`first name` = "James") AND `email address` = `email address` AND `mobile number` = `mobile number` AND type_id = type_id AND active = active
) AS A
INNER JOIN
SELECT id
FROM
(SELECT DISTINCT m.members_id as id
FROM map m
WHERE m.members_id!=15 AND (((SELECT count(*) FROM tasks) = 0) OR (((SELECT count(*) FROM checklist WHERE map_id=m.id) / (SELECT count(*) FROM tasks)) * 100 >= 0 AND ((SELECT count(*) FROM checklist WHERE map_id=m.id) / (SELECT count(*) FROM tasks)) * 100 <= 100)) AND m.`topic` = m.`topic` AND m.`location` = m.`location` AND m.`country` = m.`country` AND m.`city` = m.`city` AND m.`organization` = m.`organization`
) AS B
USING (id)
这是我从中看到的示例相交代码
SELECT DISTINCT value FROM table_a
INNER JOIN table_b
USING (value);
来自: MySQL中相交的替代方法
但是我在“内部联接”附近收到语法错误。 有人知道这是怎么回事吗?
一些事情:
只是让您的查询看起来像您用作模板的查询,我希望结果是这样的:
SELECT id
FROM
(SELECT id
FROM members WHERE id!=15 AND `last name` = `last name` AND (`first name` = "James") AND `email address` = `email address` AND `mobile number` = `mobile number` AND type_id = type_id AND active = active
) AS A
INNER JOIN
(SELECT DISTINCT m.members_id as id
FROM map m
WHERE m.members_id!=15 AND (((SELECT count(*) FROM tasks) = 0) OR (((SELECT count(*) FROM checklist WHERE map_id=m.id) / (SELECT count(*) FROM tasks)) * 100 >= 0 AND ((SELECT count(*) FROM checklist WHERE map_id=m.id) / (SELECT count(*) FROM tasks)) * 100 <= 100)) AND m.`topic` = m.`topic` AND m.`location` = m.`location` AND m.`country` = m.`country` AND m.`city` = m.`city` AND m.`organization` = m.`organization`
) AS B
USING (id)
内部联接后,从中删除该选择ID。 也就是说,您可以简化查询并查看是否可以首先使用它-子选择中有很多条件逻辑,这使得很难在小提琴中进行测试,等等。也许发布小提琴作为您的示例数据和查询?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.