我有以下表格,我想对其进行搜索:
Table A
+----+----------------------------+
| ID | description |
+----+----------------------------+
| 0 | horse going bad |
| 1 | Older Years of Resolutions |
| 2 | The knockknock 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 A.* from tags
join taglinks on tagid=tags.id
join A on A.id=jokeid
where tag in ('list','knockknock')
给我 A 中的所有条目,它们的标签(或两者)中包含“list”或“knockknock”(2,3)。我正在寻找的是从表 A 中获取条目的查询,这些条目连接到 BOTH list 和 knockknock 标记(仅限 2 个)。
我还通过在表 A 的描述中直接搜索来合并这些数据,这是需要考虑的事情。
现在我有:
select A.* from tags
join taglinks on tagid=tags.id
join A on A.id=jokeid
where tag in ('list','knockknock')
UNION
select * from A where locate('list',description) and locate('knockknock',description)
但我也从表 A 中得到 3 个,我只想要 2 个