2014-11-14 94 views
1

以下代码教会了如何按第一列对结果进行分组。但我不知道如何去做第二栏。请解释并给我一些让我清楚明白的例子。非常感谢。 (对不起我的英语)按第二列的值提取组

$insert = $dbh->prepare("INSERT INTO fruit(name, colour) VALUES (?, ?)"); 
$insert->execute(array('apple', 'green')); 
$insert->execute(array('pear', 'yellow')); 

$sth = $dbh->prepare("SELECT name, colour FROM fruit"); 
$sth->execute(); 

/* Group values by the first column */ 
var_dump($sth->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP)); 

而最重要的是我是否可以对表中的字段或不名组群。(在这种情况下,我不关心列名的索引,我只知道字段名)。由于

+0

*“最重要的是我是否可以根据表字段的名称进行分组。”* - 然后使用MySQL的GROUP BY子句http://www.mysqltutorial.org/mysql-group-by.aspx – 2014-11-14 13:52:14

+0

如果您希望能够按字段名称对结果集进行分组,那么您可以更好地了解有关MySQL可以执行的操作:“GROUP BY”是这里工作的更好工具 – 2014-11-14 13:53:09

+0

当我使用GROUP BY。我没有我的愿望结果。 – 2014-11-14 13:54:52

回答

2

呃,为the manual clearly states:结果由第一列的值进行分组,所以才改变:

$sth = $dbh->prepare("SELECT name, colour FROM fruit"); 

$sth = $dbh->prepare("SELECT colour, name FROM fruit"); 

CF的代码示例,你已经拷贝粘贴:

/* Group values by the >> FIRST << column */ 
var_dump($sth->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP)); 

传递列索引值确实可以值得一试,太:

$sth = $dbh->prepare("SELECT name, colour FROM fruit"); 
$byName = $sth->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP); 
$byColour = $sth->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP, 1); 
+1

$ sth-> fetchAll(PDO :: FETCH_COLUMN | PDO :: FETCH_GROUP,numIndex);我刚刚发现了这一点。这可能是正确的。 – 2014-11-14 13:33:02

+0

@QuiNguyen:或许,你可以尝试索引1(列是零索引)... – 2014-11-14 13:37:34

+0

*“列是零索引”* - 就像PHP等;)+1的一大特点,我不知道。 – 2014-11-14 13:46:06

0
$sth->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP, columnIndex); 
$sth->fetchAll(PDO::FETCH_UNIQUE|PDO::FETCH_GROUP, columnName); 

我不知道它的工作与否。去尝试一下。

+0

'FETCH_UNIQUE'!='FETCH_GROUP',以及方法:引用手册:_“'PDO :: FETCH_COLUMN':返回指定的0索引列”_ so'columnName'刚刚出来 – 2014-11-14 13:45:03

+0

请参阅我的编辑。我改变了它。 – jewelnguyen8 2014-11-14 13:47:51

+0

然后阅读手册,'columnName'仍然不是一个选项,虽然 – 2014-11-14 13:51:19

相关问题