0

我的数据集如下,

job_id | status 
-------|-------
  100  |   0
  100  |   0
  102  |   1
  102  |   0
  104  |   1
  104  |   1
---------------

处理数据的查询

SELECT job_id, (CASE WHEN FIND_IN_SET(0, GROUP_CONCAT(status)) > 0 THEN FALSE ELSE TRUE END) AS isfinished
FROM mytable
GROUP BY job_id

结果是

job_id | isfinished
-------|-----------
  100  |     0
  102  |     0
  104  |     1
-------------------

有没有人这样做过?也许有更好的方法。

4

1 回答 1

0

看起来您正在尝试查看最小值是否大于 0。

SELECT job_id, min(status) > 0 AS isfinished
FROM mytable
GROUP BY job_id;

http://sqlfiddle.com/#!2/e4792/4

于 2013-05-27T04:05:51.893 回答