为什么此查询会在结果中返回其自身的一部分?

时间:2014-08-29 08:34:45

标签: mysql

我之前没有碰过这个。这是查询:

$query="SELECT 
  CONCAT_WS(' ',
        TRIM(SUBSTRING_INDEX(
             SUBSTRING(document, 1, INSTR(document, 'Quickstart') - 1 ),
             ' ',
             -8)
        ),'Quickstart',
        TRIM(SUBSTRING_INDEX(
             SUBSTRING(document, INSTR(document, 'Quickstart') + LENGTH('Quickstart') ),
             ' ',
             5)
        )
)
FROM documents WHERE MATCH(document)
AGAINST('Quickstart' IN BOOLEAN MODE )";

这是结果数组:

[0] => Array
    (
        [CONCAT_WS(' ',
        TRIM(SUBSTRING_INDEX(
             SUBSTRING(document, 1, INSTR(document, 'Quickstart') - 1 ),
             ' ',
             -8)
        ),'Quickstart',
        TRIM(SUBSTRING_INDEX(
             S] => 
Quickstart for set up. 1. Register your
    )

它返回的最后一部分似乎是正确的:

Quickstart for set up. 1. Register your

但是为什么查询本身会被返回?这是php:

if (!$result = mysql_query($query)) send(mysql_error(),"e");
$hitArray=array();      
while ($row=mysql_fetch_array($result, MYSQL_ASSOC) ) { $hitArray[]=$row; }

谢谢你看看。

1 个答案:

答案 0 :(得分:2)

它不会自行返回,它是数组中的键,尝试为CONCAT_WS部分指定别名:

SELECT 
CONCAT_WS( ... ) as concatenated
FROM documents WHERE MATCH(document)
AGAINST('Quickstart' IN BOOLEAN MODE )