mysql - 通过连接表搜索仅显示来自一个表的匹配数据

标签 mysql search join

我正在尝试使用以下查询执行搜索:

        SELECT 
            *
        FROM 
            question_index
        JOIN
            question_content
            ON question_index.id = question_content.question_id
        WHERE
            question_index.remove = '0' AND
            question_index.active = '1' AND         
            question_index.publish_date <= '$current_time' AND
            (
                question_index.question LIKE '%$keyword%' OR
                question_content.text LIKE '%$keyword%'
            )
        GROUP BY
            question_index.id
        ORDER BY 
            question_index.publish_date DESC

我想要做的是让搜索遍历两个表并显示匹配“question_index.question”或“question_content.text”的结果

但现在,它只显示匹配“question_content.text”的结果。我尝试删除“question_content.text LIKE '%$keyword%'”,但根本没有出现结果。我可以获得与“question_index.question”匹配的结果的唯一方法是如果我一起删除连接。但这不是我想要的结果。

最佳答案

  SELECT 
        *
    FROM 
        question_index LEFT
    JOIN
        question_content
        ON question_index.id = question_content.question_id
    WHERE
        question_index.remove = '0' AND
        question_index.active = '1' AND         
        question_index.publish_date <= '$current_time' AND
        (
            question_index.question LIKE '%$keyword%' OR
            question_content.text LIKE '%$keyword%'
        )
    GROUP BY
        question_index.id
    ORDER BY 
        question_index.publish_date DESC

关于mysql - 通过连接表搜索仅显示来自一个表的匹配数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38082460/

相关文章:

PHP While 循环从多个 'Joined' 表中分离唯一类别

mysql - 这可能吗?与 Left Join 相关的进一步 MySQL 查询

php - MySql 查询错误

php - Laravel 5.3 API 中的搜索功能

algorithm - 实现蒙特卡洛树搜索 - 游戏状态节点与可能的移动节点

php - MYSQLI 搜索查询使 GoDaddy 网站服务器崩溃

mysql - 如何在 MYSQL 中比较 YEAR 类型?

mysql - SQL:从我的 sql 查询的日期值中减去 1 天

mysql - SQL选择计算

mysql - MySql 按数字排序