如果表X的ANY ROW中有匹配,如何返回表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'返回行的任何想法如果桌子内有任何匹配?
答案 0 :(得分: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));
答案 1 :(得分:0)
在查询结尾添加了限制。
In [1]: import hashlib
In [2]: hashlib.sha256('This is a test'.encode('utf8')).hexdigest()
Out[2]: 'c7be1ed902fb8dd4d48997c6452f5d7e509fbcdbe2808b16bcf4edce4c07d14e'
In [3]: hashlib.sha256('This is a tist'.encode('utf8')).hexdigest()
Out[3]: 'f80b4162fc28f1f67d1a566da60c6c5c165838a209e89f590986333d62162cba'
In [4]: hashlib.sha256('This is a tst.'.encode('utf8')).hexdigest()
Out[4]: '1133d07c24ef5f46196ff70026b68c4fa703d25a9f12405ff5384044db4e2adf'