如果表X的任意行中有匹配项,如何返回表X的第一行?在foreach循环中,我在下面有以下查询。
$sql_string="SELECT id,keyword_tags,topic_name,contents,
MATCH(keyword_tags) AGAINST ('$keysearch' IN BOOLEAN MODE) AS score1,
MATCH(topic_name) AGAINST ('$keysearch' IN BOOLEAN MODE) AS score2,
MATCH(contents) AGAINST ('$keysearch' IN BOOLEAN MODE) AS score3
FROM ".$table_get." WHERE
(MATCH(keyword_tags) AGAINST ('$keysearch' IN BOOLEAN MODE) OR
MATCH(topic_name) AGAINST ('$keysearch' IN BOOLEAN MODE) OR
MATCH(contents) AGAINST ('$keysearch' IN BOOLEAN MODE))
AND id='1'
ORDER BY score1 DESC, score2 DESC, score3 DESC";
如果表中有任何匹配项,是否有任何想法如何返回id ='1'的行?
如果表X的任意行中有匹配项,如何返回表X的第一行?
SQL标准EXISTS (subquery)
构造可以帮助:
SELECT ...
FROM X
WHERE id = 1 -- our "first" row only
AND
EXISTS (SELECT * -- only if there EXISTS a MATCH anywhere in table
FROM X
WHERE MATCH(field1) AGAINST ('search_val' IN BOOLEAN MODE)
OR
MATCH(field2) AGAINST ('search_val' IN BOOLEAN MODE)
...
MATCH(fieldN) AGAINST ('search_val' IN BOOLEAN MODE));
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句