BREAK ON MySQL查询中的指令?

时间:2015-06-11 09:33:24

标签: mysql sql

我想用MySQL(v.5.5.41)执行该查询,该查询适用于Oracle:

CLEAR BREAKS;
BREAK ON mq;

SELECT mq, im, pf, kmct 
FROM vehicules 
WHERE mq='Renault' 
ORDER BY mq;

CLEAR BREAKS;

这是Oracle构建的输出,以及我正在寻找的MySQL:

mq       | im          | pf   | kmct
---------+-------------+------+----------
Renault  | AA-888-AA   | 4    | 3424
---------+-------------+------+----------
         | AA-999-AA   | 2    | 2042
---------+-------------+------+----------
         | BB-888-BB   | 3    | 1580

我得到的错误是:

  

#1064 - 您的SQL语法出错;查看与您的MySQL服务器版本相对应的手册,以获得正确的语法,以便在“' CLEAR BREAKS'附近使用在第1行

似乎没有执行命令" BREAK"在MySQL中。真的吗?在那种情况下,有没有办法模拟它?

1 个答案:

答案 0 :(得分:1)

MySQL不支持BREAK ON。 AFAIK它是ORACLE中的报告样式命令。

要获得所需的输出,您必须记住先前读取的行的列值,并与下一行的列中读取的值进行比较。匹配时,可以将空字符串设置为输出,否则保留新值。

示例

SELECT 
       ( CASE WHEN @prev_mq != mq THEN @prev_mq := mq ELSE '' END ) AS mq
     , im, pf, kmct 
  FROM vehicules, ( SELECT @prev_mq := '' ) AS initializer
 WHERE mq = 'Renault' 
-- ORDER BY mq;

ORDER BY mq的使用在这里没有意义。因为,当您用空字符串替换重复出现时,ORDER BY会导致意外结果。