我有一个包含20行的表,例如有一行:
2,3,5,6,8,22
2,3,5,6,8,22,44,55
etc.
如何从mysql表行中仅选择唯一的数字,而不是重复的结果是:
2,3,5,6,8,22,44,55
表格定义:
CREATE TABLE IF NOT EXISTS `test` (
`id` int(11) NOT NULL auto_increment,
`active` tinyint(1) NOT NULL default '1',
`facilities` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;
INSERT INTO `test` (`id`, `active`, `facilities`) VALUES
(1, 1, '1,3,5,6,7,8'),
(2, 1, '2,3,4,5,8,9'),
(3, 1, '4,5,6,7,9,10');
这是我的尝试:
SELECT DISTINCT facilities FROM test WHERE active='1'
$dbgeneral= explode(',', $row['facilities']);
$facilities = array(
"Air Conditioning" => "2",
"Balcony" => "4");
foreach ($facilities as $facilities=> $v) {
if(in_array($v,$dbgeneral)) {
echo '';
}
}
答案 0 :(得分:5)
由于这只是一个字段,您可以执行以下操作:
$result = mysql_query('SELECT facilities FROM table');
$facilities = array();
while(($row = mysql_fetch_array($result))) {
$facilities = array_merge($facilities , explode(',', $row[0]));
}
$facilities = array_unique($facilities);
但是你应该考虑改变你的数据库设计,看起来你的数据没有规范化。
参考:explode()
,array_merge()
,array_unique()
根据您想要执行的查询类型,可以使用更好的表格布局:
| id | facility |
| 2 | 1 |
| 2 | 2 |
| 2 | 3 |
...
| 3 | 1 |
| 3 | 7 |
| 3 | 9 |
...
和然后你可以这样做:
SELECT DISTINCT facility FROM ...
答案 1 :(得分:1)
使用King的答案,他把它钉在了比我无论如何更好的位置。
答案 2 :(得分:0)
- 删除 - 因为它错了/没有回答问题(基于提供的额外数据)。 Felix Kling的答案要好得多。