我有2个表(虽然我不确定我真的需要使用articlesDB表)。我目前很难找到必要的SQL逻辑。我可以在PHP中一起破解一些东西,但我觉得正确的SQL语句可以跳过这一步。
继承我拥有的东西;
**theTag**-**articleID**
bear - 1
fish - 1
cow - 1
tiger - 2
cow - 2
panda - 2
articleID
1
2
规则:
我需要一个SQL语句,它会返回任何在$ KeyTag上搜索过的文章中出现的所有标记。
在上面的例子中,如果我搜索“牛”,我会得到;熊,鱼,牛,虎,牛,熊猫。我很好,有重复(这是重点)。
此外,如果我搜索标签“熊猫”,我会得到;老虎,牛,熊猫。
答案 0 :(得分:1)
如果我理解正确,您希望选择同一篇文章中出现的所有标签作为特定标签:
select theTag from tagsDB where articleID in
(select articleID from tagsDB
where theTag = '$KeyTag'
)
答案 1 :(得分:1)
尝试:
SELECT theTag FROM tagsBD WHERE articleID IN
(SELECT articleID FROM tagsDB WHERE theTag = 'cow');
SQL小提琴
答案 2 :(得分:0)
您也可以使用SELF JOIN
来实现您的目标。
SELECT t2.theTag
FROM tagsDB t1 INNER JOIN tagsDB t2 ON t1.theTag = '$KeyTag'
AND t2.articleID = t1.articleID;
INDEX(theTag, articleID)
上的索引至少应为tagsDB
。