我有一个MySQL数据库,其中有数百个项目由两个不同的值标识:model
和color
。
例如:
model | color
------|------
001 | 1
001 | 1
001 | 2
004 | 1
004 | 2
我正在使用php脚本打印包含所有不同可用项目的表格,其中应跳过相同的项目。输出应该是这样的:
model | color
------|------
001 | 1
001 | 2
004 | 1
004 | 2
请注意,项目model: 001, color:1
只应显示一次。
完成工作的最佳方法是什么?我正在考虑在添加每个项目后向数组model:color
添加一个$listed
字符串,然后使用in_array()
检查项目是否已列出。这是一种可接受的方法还是有一个较少的虚拟解决方案?
PS:要从数据库中检索要在表格中显示的其他值,例如“名称”,“值”,“大小”。我不确定这会有什么影响。
如果您要进行吸烟,请留下一些代码作为示例。
非常感谢!
答案 0 :(得分:3)
如果您不能使用group / distinct,那么您的解决方案是可以接受的。但是,我通常喜欢使用isset而不是in_array:
$completed = array();
foreach ($rows as $data) {
$key = $data['model'] . $data['color'];
if (isset($completed[$key])) {
continue;
}
// Display
$completed[$key] = true;
}
原因是我通常需要使用大型集合并且执行isset通常比为数千个项目执行in_array更快。
答案 1 :(得分:0)
解决它:
SELECT * from table_name GROUP BY model, color