按语句向此组添加条件

时间:2011-11-21 14:10:25

标签: php mysql codeigniter activerecord

我有一个由名字,姓氏和日期组成的表格,如下所示:

 _________
| People  |____________________________________
|----------------------------------------------|
| first_name  |  last_name  |  date            |
|----------------------------------------------|
| Jerry          Garcia      01/01/2001        |
| Adam           Garcia      01/02/2001        |
| Hans           Fist        01/02/2001        | 
| Lucy           Fist        01/02/2001        |
|______________________________________________|

我有一个小组,按照这样的顺序排序:

$this->db->group_by("date, last_name");
$this->db->order_by('date ASC');

很自然地,你会期望它只给你两个加西亚的一排和两个拳的一排。我想做什么,并记住这是一个非常简化的情况,是按姓氏分组,但如果last_name = 'Garcia' DONT 。所以你会在结果集中看到garcias和只有一个拳头。

我该怎么做?

如果它只是GROUP BY date, last_name NOT 'Garcia'

那么简单

4 个答案:

答案 0 :(得分:1)

也许您可以在第一个查询中添加类似

的内容
WHERE name != 'Garcia'

然后,做

UNION SELECT * WHERE name = 'Garcia'

答案 1 :(得分:0)

您应该能够摆脱GROUP BY并使用ORDER BY last_name DESC, date ASC

请注意,如果您遇到特定问题,请尝试解决问题。你会得到更好的答案!

答案 2 :(得分:0)

您可以使用GROUP BYHAVING子句中使用条件。然后,您可以使用UNION关键字加入两个结果集。

答案 3 :(得分:0)

我自己想出了一个解决方案。对于发现自己处于类似情况的任何人,只需在查询的CASE/WHEN部分使用SELECT语句即可。

您可以将其用作要分组的每一行的布尔标记。

CASE `last_name` WHEN 'Garcia' THEN '1' END AS is_garcia