我正在我的数据库中进行搜索。同时我安装了一个标签系统。并非所有内容都已标记,因此我还需要数据库中的“老式”结果。让我说清楚:
Table A
+----+----------------------------+
| ID | description |
+----+----------------------------+
| 0 | horse going bad |
| 1 | Older Years of Resolutions |
| 2 | The pirate |
| 3 | The Wish list |
| 4 | list that's no list |
+----+----------------------------+
table TAGS
+----+------------+
| ID | tag |
+----+------------+
| 0 | list |
| 1 | knockknock |
+----+------------+
table TAGLINKS
+-------+--------+
| TAGID | JOKEID |
+-------+--------+
| 0 | 2 |
| 0 | 3 |
+-------+--------+
当我进行此搜索时:
select * from A where locate('list',description)
我将从表 A 中获取 ID 3 和 4,这很棒。
当我进行此搜索时:
select * from tags
join taglinks on tagid=tags.id
join A on A.id=jokeid
where tag='list'
我从表 A 中得到 ID 2 和 3。
我想要返回的是 ID 2、3 和 4。所以两个结果的连接。我试过这个:
select * from tags
join taglinks on tagid=tags.id
join A on A.id=jokeid or locate('list',description)
它似乎给了我正确的结果,但它太慢了,它阻塞了服务器(实际上这些表比这里的例子大得多)。我想要一个组合查询的原因是我需要像 ORDER BY 和 LIMIT 这样的函数。因此,我希望从上述两个查询中获得组合结果。