我正在尝试创建一个 SELECT 查询,该查询通过特定的关键字组合 3 个表LEFT JOIN
,然后生成结果表。MATCH
AGAINST
到目前为止,我的测试表明查询工作正常并且输出结果正确,但是我对通过LEFT JOIN
.
问题是 - 我应该添加额外的代码来反映FULLTEXT
索引要求,还是只正确索引原始表中的相关列就足够了?MATCH AGAINST
LEFT JOIN
问的原因是这个帖子。如果我理解它是正确的,我的代码不应该工作(因为“你不能定义全文索引......在 MySQL 中的多个表”)。因此MATCH AGAINST
forma.name_url
和v.model
, 因为它们没有被索引(或者这是我的理解方式,如果我错了,请纠正我:))。
但是,由于查询输出似乎是正确的,如果以下代码正确,或者我应该添加/修改某些内容,我需要专家建议:
SELECT v.*, vt.color, ma.*
FROM tbl_items AS v
LEFT JOIN tbl_options
AS vt on v.id = vt.v_id
LEFT JOIN tbl_names
AS ma on v.make = ma.id
WHERE
(
(
MATCH (ma.name_url) AGAINST ('keyword1' IN BOOLEAN MODE)
OR MATCH (v.model) AGAINST ('keyword1' IN BOOLEAN MODE)
)
AND
(
MATCH (ma.name_url) AGAINST ('keyword2' IN BOOLEAN MODE)
OR MATCH (v.model) AGAINST ('keyword2' IN BOOLEAN MODE)
)
)
AND v.type = 4