mysql - 如何使用 dql 从数据表中获取唯一值?

标签 mysql doctrine dql

我有一个表,其中有一列存储了各种值。我想使用 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/

相关文章:

php - <ModelName>.class.php 和 <ModelName>Table.class.php 之间的 Symfony 区别

php - 学说 2 DQL : Cannot reuse named parameter?

symfony - 如何使用 bucle 通过 Doctrine DQL 搜索数组单词

mysql - LEFT JOIN 的效率

mysql - 如何修复此 JOIN 查询?

mysql - 如何根据不相关的关系过滤 Symfony 表单实体输出

forms - symfony 是否有一个内置的方法来将受污染的值与原始值进行比较?

mysql - MySQL中两个日期之间的差异

mysql - MySQL可以存储多少数据?

php - Doctrine 查询类不在实体目录中