我有这样的查询:
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。
答案 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有多个值,则使用其中一个值。