这个语句首先从FROM...WHERE之间开始读。
注意:SQL语句的关键字我已经用大写标志出来的。
1、RIGHT LEFT是以右表(即B表)所有的数据为基准,通过关键字连接a表。
2、 (SELECT语句) AS b 是子查询的一种,是把查询出来的语句视作一个表。第6-7行就是把这个SQL执行的结果当作一个表,命名为b表
3、IN也是子查询,即使符合这里面以逗号隔开的值
基于这个规定,我开始翻译:
![](https://imgsa.baidu.com/forum/w%3D580/sign=a5c18f3d2e2eb938ec6d7afae56385fe/8f34d42a2834349bf21de259c8ea15ce37d3bee9.jpg)
查询---------SELECT
a表的tid和subject---------a.tid,subject
来自----------FROM
srqq_threads设定在这里的名字是a---------srqq_threads AS a
以右表为基表,连接a表---------RIGHT JOIN
子查询开始---------(
查询----------SELECT
获得唯一的tid---------DISTINCT tid
来自---------FROM
a表---------srqq_tagdata AS a
右连接---------RIGHT JOIN
b表---------srqq_tags AS b
连接规则---------ON
a表tagid等于b表的tagid---------a.tagid=b.tagi
条件---------WHERE
tagname的值等于$tage---------tagname IN ($tags)
子查询结束-----------)
把子查询的结果保存为b表---------AS b
连接条件---------ON
a表的tid等于b表的tid----------------a.tid=b.tid
条件---------------WHERE
a表的tid不能等于控制------------a.tid IS NOT NULL
并且------------AND
a表的fid不等于0-------------a.fid<>0
根据tid的值降序排序---------------ORDER BY tid DESC
最后只显示$count行数据---------------LIMIT $count