mysql - 在mysql中合并两个表

标签 mysql sql

我有三个表

   table name: tags
          id (int)
          tag_name (vharchar)    

   table name: messages
          id (int)
          message_title (vharchar)
          message_content(vharchar)

    table name: message_tag
          message_id (int)
          tag_id (int)

我试过这段代码,但它没有用(返回空)

SELECT messages.message_title, messages.message_content, tags.tag_name
            FROM messages
            INNER JOIN message_tag ON messages.id = message_tag.message_id
            INNER JOIN tags ON tags.id = message_tag.tag_id
            WHERE message_tag.tag_id =191
            AND message_tag.tag_id =19
            AND message_tag.tag_id =31
            ORDER BY RAND( )
            LIMIT 20

我想随机选择 20 行连接到标签 191、19 和 31

最佳答案

SELECT messages.message_title, messages.message_content, tags.tag_name
        FROM messages
        INNER JOIN message_tag ON messages.id = message_tag.message_id
        INNER JOIN tags ON tags.id = message_tag.tag_id
        WHERE message_tag.tag_id IN (191, 19, 31)
        ORDER BY RAND( )
        LIMIT 20

使用 IN 而不是 AND。这将为您带来至少链接到这些特定标签之一的消息。

更新:如果您想要获取所有 3 个标签都存在的消息,您可以改为这样做(假设您在 message_tag 中的行是唯一的):

    SELECT messages.message_title, messages.message_content, tags.tag_name
        FROM messages
        INNER JOIN message_tag ON messages.id = message_tag.message_id
        INNER JOIN tags ON tags.id = message_tag.tag_id
        WHERE message_tag.tag_id IN (191, 19, 31)
        GROUP BY messages.id
        HAVING COUNT(messages.id) > 2
        ORDER BY RAND( )
        LIMIT 20

关于mysql - 在mysql中合并两个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11762825/

相关文章:

php - mysql_fetch_assoc 无法访问相似的列名

python - Django - <FieldFile : None> While Updating a row in Employee table

sql - 加入不存在的表

sql - T-SQL 中的动态 WHERE 子句

java - 如何在 EL 中从 JSP 访问 getColumnNames?

php - Mysql Group Yii Active Record 按日期/时间

php - 了解为什么这个 MySQL 外部选择会减慢查询速度

mysql - mysql CLI 工具是否提供了一种以控制台友好的方式显示二进制数据的方法?

mysql - Sequel Pro 的 Linux 替代品? (基于 GUI 的 sql 导航器)

按出现次数最多的 MySQL 查询顺序