看看下面这条MySQL的join语句的问题在哪
怪我咯
怪我咯 2017-04-17 11:14:10
[MySQL讨论组]

(不好意思,之前的问题表述不准。看到评论和回答里面用的都是left join,这个是我的问题,再次深表歉意!)

这条语句想要达到的目的是:根据activity_relation表中activity_idtag_id的关系,在activity表中取出拥有指定tag的文章。

SELECT DISTINCT * FROM `activity` WHERE status != 'draft' JOIN `activity_relation` ON `activity.id` = `activity_relation.activity_id` AND (`tag_id` = '10')

现在MySQL的错误提示是:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ON ji_activity.id = ji_activity_relation.activity_id AND (tag_id = '10'))' at line 1

谁能帮我看一下是哪里出了问题?谢谢。

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(2)
黄舟
  1. 首先,你需要明确sql语句的执行顺序,from子句组合来自不同数据源的数据,where子句对指定条件进行筛选,如果还需要组合的话,需要考虑group by和having子句
  2. 其次,回答一下你的sql语句错误,你应该先用from和join将两个表组合,再用where子句筛选
select distince a.* from activity as a join activity_relation as b on a.id = b.activity_id where a.status != 'draft' and b.tag_id = '10';
大家讲道理

肿么会写成那样。

SELECT a.* FROM activity_relation r LEFT JOIN activity a 
      ON r.activity_id = a.id WHERE a.status != 'draft' AND r.tag_id = 10
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号