我有一个表,其中有一列存储了各种值。我想使用 dql 从该表中检索唯一值。
Doctrine_Query::create()
->select('rec.school')
->from('Records rec')
->where("rec.city='$city' ")
->execute();
现在我只想要唯一值。谁能告诉我该怎么做...
编辑
表结构:
CREATE TABLE IF NOT EXISTS `records` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`state` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`city` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`school` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=16334 ;
这是我正在使用的查询:
Doctrine_Query::create()
->select('DISTINCT rec.city')
->from('Records rec')
->where("rec.state = '$state'")
// ->getSql();
->execute();
为此生成 Sql 给我:
SELECT DISTINCT r.id AS r__id, r.city AS r__city FROM records r WHERE r.state = 'AR'
现在检查生成的 sql::::: DISTINCT 在“id”列中,因为我希望在城市列中区分。任何人都知道如何解决这个问题。
EDIT2
Id 是唯一的,因为它是一个自动增量值。是的,我在城市列中有一些真正的重复项,例如:Delhi 和 Delhi。对.. 现在当我试图从中获取数据时,我得到了德里两次。我怎样才能像这样查询:
select DISTINCT rec.city where state="xyz";
因为这会给我正确的输出。
编辑 3:
任何人都可以告诉我如何弄清楚这个查询..???
最佳答案
取决于您使用的版本,但我遇到了同样的问题并且 ->distinct() 对我有用。
Doctrine_Query::create()
->select('rec.city')->distinct()
->from('Records rec')
->where("rec.state = '$state'")
->execute();
关于mysql - 如何使用 dql 从数据表中获取唯一值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2148620/