我为艺术广告制作了内部数据库/搜索引擎。我正在尝试创建一个搜索条件,您可以在其中查询数据库中的一列,还可以使用全文搜索在数据库中搜索多个列以进行短语搜索。搜索查询的示例可能是: 11月{和}黑色星期五。 11月将搜索与created_for列匹配的广告素材,黑色星期五将使用全文搜索搜索标题,副标题和additional_text列。任何关于如何实现这一点的想法都会非常有用!
SELECT
(SELECT * FROM headlines WHERE created_for = '$searchString' AND image_slug <> '')
(SELECT *, MATCH(headline) AGAINST('$fullText' IN BOOLEAN MODE) AS MultiScore, MATCH(subheadline, additional_text) AGAINST('$fullText' IN BOOLEAN MODE) AS MultiSecondScore
FROM `headlines`
WHERE MATCH(headline, subheadline, additional_text) AGAINST('$fullText' IN BOOLEAN MODE))
我尝试在第二个Select语句之前添加一个UNION语句,但是我收到一条错误消息,指出列不匹配。不知道我在这里遇到了什么问题,但提前感谢您的帮助!
答案 0 :(得分:2)
在AND
子句中使用WHERE
。
SELECT *, MATCH(headline) AGAINST('$fullText' IN BOOLEAN MODE) AS MultiScore, MATCH(subheadline, additional_text) AGAINST('$fullText' IN BOOLEAN MODE) AS MultiSecondScore
FROM headlines
WHERE created_for = '$searchString'
AND image_slug <> ''
AND MATCH(headline, subheadline, additional_text) AGAINST('$fullText' IN BOOLEAN MODE)
UNION
会得到符合任何一个条件的结果,而不是两者。当您使用UNION
时,两个子查询都必须返回相同数量的列 - 您必须向第一个查询添加额外的列以匹配MultiScore
和MultiSecondScore
列第一次查询。