MySQL从表中选择值,其中(x,y,z)中的字段循环输出

时间:2015-04-29 00:51:15

标签: mysql

我有这样的查询:

select value from table 
where field_id in (52,54,58,59,60,61,62,55,53,132) and item_id = 16 
order by FIELD (field_id,52,54,58,59,60,61,62,55,53,132);

目前,输出按field_id分组,因此field_id 52的所有值都是吐出,然后是field_id 54的所有值等等。

有没有一种方法可以让MySQL循环输出所以输出每个field_id的一个值,然后返回到另一个传递的开头?尝试在sql本机查询中执行此操作,而不是使用PHP。

1 个答案:

答案 0 :(得分:0)

我猜你说目前,输出按field_id分组,并且让大多数人在这里感到困惑。因为根据您的查询它没有分组。它只是订购。

但你需要它。所以只需尝试分组(每个field_id将带来一个值):

SELECT field_id, MAX(`value`), AVG(`value`) 
FROM `table` 
WHERE field_id IN (52,54,58,59,60,61,62,55,53,132) 
  AND item_id = 16 
GROUP BY field_id
ORDER BY FIELD (field_id,52,54,58,59,60,61,62,55,53,132);

你可以使用任何聚合函数,如MIN,MAX,AVG,如果每个field_id有多个值,则使用其中一个值。