如果您想自动连接两行,这意味着您可能只需创建一行而不拆分它:
file | date | face
cyclist.jpg | 04-05-2012 | true
否则,如果您需要保留单独的行,只需在一个查询中选择所有行:
$res = mysql_query("select * from tags where file='cyclist.jpg'");
然后迭代它们以完成“合并”记录:
$res = mysql_query("select * from tags_table where file='cyclist.jpg'");
$mergedRow = array();
while ($row = mysql_fetch_assoc($res)) {
foreach ($row as $rowKey => $rowValue) {
if (!array_key_exists($rowKey, $mergedRow)) {
$mergedRow[$rowKey] = $rowValue;
}
}
}
编辑:
正如所承诺的,这里是使用单个查询将两行合并为一个的示例,但是我仍然建议使用 PHP 中的$mergedRow 方法来合并它们:)
CREATE TABLE `files_table` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`tag_type` enum('PARENT','CHILD') NOT NULL DEFAULT 'PARENT',
`date` date DEFAULT NULL,
`file` varchar(255) NOT NULL DEFAULT '',
`face` smallint(4) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
然后您可以将 PARENT-CHILDREN 集与:
SELECT t1.file, t1.date, t2.face
FROM files_table AS t1 JOIN files_table AS t2 ON (t1.file = t2.file)
WHERE t1.tag_type = 'PARENT' AND t2.tag_type = 'CHILD'
GROUP BY file