选择具有其他数据的具有相同 id 的行(搜索)

时间:2021-06-21 10:57:22

标签: mysql

我正在尝试构建一个搜索功能,但当前的表结构让我感到困扰。

因此,每一行都标识一个带有音频 ID 的“标签”关联。

TABLE audio_tag_assoc 示例

enter image description here

我通过加入表 tag_association 来获取每个标签 ID 的名称。

TABLE tag_association 示例

enter image description here

因此,我需要获取与两个甚至三个标签名称匹配的所有音频 ID。

我尝试了以下内容,但您可能会说它不起作用。我稍后会在这些括号之间添加一个连接,以使用字符串更改 IN 的 ID。

SELECT * 
FROM audio_tag_assoc a 
    JOIN tag_association b ON a.tag = b.id 
WHERE a.audio = (SELECT * 
                FROM audio_tag_assoc 
                WHERE tag IN (2,3)
                )

最初我尝试使用 b.name = 'Male' AND b.name = 'Film' 但当然,这不是 mysql WHERE 子句的工作方式。

1 个答案:

答案 0 :(得分:0)

做:

   SELECT 
    * 
FROM 
    audio_tag_assoc
INNER JOIN
    tag_association ON audio_tag_assoc.tag = tag_association.id 
WHERE 
audio_tag_assoc.id IN (SELECT
                    a.id
                FROM audio_tag_assoc a
                WHERE
                    a.tag IN (2,3)
                GROUP BY 
                    a.audio
                HAVING COUNT(a.id) >= 2
                );
相关问题