MYSQL 多表查询的字段覆盖问题

2016-09-02 08:51:40 +08:00
 heat
A 和 B 表中都有相同的字段 id 、 date 和 content 。我想用一条语句查询两个表的 content LIKE %abc%的所有条目,并且按照 date DESC 排序,请问该怎么写。

PS : B 表中有一个 aid 用来关联 A 表的 id.

用 LEFT JOIN 发现相同字段并不能覆盖...

PS:最好别用UNION ALL,感觉效率和JOIN比太差
2373 次点击
所在节点    问与答
7 条回复
bugsnail
2016-09-02 08:55:51 +08:00
原来的 SQL 重复字段用别名,然后在外面套一层做 order by

select *
from (
原来的 SQL
) x
order by x.date desc
heat
2016-09-02 09:06:24 +08:00
@bugsnail 效率和写两条比的话似乎差不多哈
bugsnail
2016-09-02 09:09:57 +08:00
@heat 没细看,发现你 like 是 content 字段,用%%这样的形式不会用到索引的,如果能确定头字符的 like xxx%会用到索引
zclzhangcl
2016-09-02 09:59:28 +08:00
@bugsnail 楼上说的对,采用%%进行模糊匹配的话,并不会走索引,效率不会高的。从你的描述也没看出 A 表和 B 表的关联关系,所以还不如写 2 个 sql 。
zclzhangcl
2016-09-02 09:59:48 +08:00
@zclzhangcl 我说的关联关系是指业务关系
ranran
2016-09-02 11:37:05 +08:00
@zclzhangcl
@bugsnail

还有这样的坑啊……一直以为全文索引有用的……匹配开头或结尾…… 一般都不适用啊
zclzhangcl
2016-09-02 15:58:14 +08:00
@ranran 你在数据库里用 explain 就知道是否走索引了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/303370

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX