mysql - 如果表

时间:2015-08-13 01:59:40

标签: php mysql

如果表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'返回行的任何想法如果桌子内有任何匹配?

2 个答案:

答案 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'