Mysql 在联接表中搜索只显示一个表中的匹配数据
我正在尝试使用以下查询执行搜索:Mysql 在联接表中搜索只显示一个表中的匹配数据,mysql,search,join,Mysql,Search,Join,我正在尝试使用以下查询执行搜索: SELECT * FROM question_index JOIN question_content ON question_index.id = question_content.question_id WHERE question_index.remove = '0' AN
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
选择
*
从…起
问题索引
参加
问题内容
ON question\u index.id=question\u content.question\u id
哪里
问题_index.remove='0'和
问题_index.active='1'和
问题_index.publish _日期选择
*
从…起
问题(左)
参加
问题内容
ON question\u index.id=question\u content.question\u id
哪里
问题_index.remove='0'和
问题_index.active='1'和
问题_index.publish _日期选择
*
从…起
问题(左)
参加
问题内容
ON question\u index.id=question\u content.question\u id
哪里
问题_index.remove='0'和
问题_index.active='1'和
问题_index.publish _日期由于您刚刚加入了join
,因此默认情况下您正在进行内部
连接,这意味着您将在连接两侧都存在记录的情况下获得结果。如果您希望所有记录都来自一侧,即使另一侧没有匹配项,您需要使用左连接
或右连接
。左连接成功!请提交它作为答案,我会接受它,谢谢!由于您刚刚进行了join
,因此默认情况下您正在执行内部
连接,这意味着您将在连接两侧都存在记录的情况下获得结果。如果您希望所有记录都来自一侧,即使另一侧没有匹配项,您需要使用左连接
或右连接
。左连接成功!请提交它作为答案,我会接受它,谢谢!Union all也可以工作,但将其更新为Left join,因为从性能角度看,它比unionUnion all更好,但将其更新为Left join,因为从性能角度看,它比Union更好
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