【发布时间】:2016-05-27 07:46:09
【问题描述】:
我有一张这样的桌子:
ID Field1 Field2 Field3
1 Apple Fruit Cheap
2 Apple Fruit Eatable
3 Apple Food Something
4 Banana Fruit Cheap
5 Banana Food Eatable
6 Cat Pet Weird
7 Cat Pet Friend
8 Cat Pet Amazing
9 Cat Animal Cheap
我想获得不同的 Field1、Field 2 元素并按包含“Cheap”的 Field3 排序。 我期待这个:
ID Field1 Field2 Field3
1 Apple Fruit Cheap
4 Banana Fruit Cheap
9 Cat Animal Cheap
3 Apple Food Something
5 Banana Food Eatable
6 Cat Pet Weird
结果有 ID=2,7,8 的行被删除,因为 ID=2 具有相同的 field1,field2 与 ID=1 和 ID=7,8 具有相同的 field1,field2 与 ID=6。 ID = 1 和 ID = 2 具有相同的 Field1 和 Field2。 ID = 6,7,8 中只有一个会因为具有不同的 Field1、Field2 而进入结果。
我已经尝试过“分组”和“按字段()排序”,但是因为“分组”所需的行被淘汰了。例如,分组后 ID = 1 不存在,而 ID = 2 行存在。
我目前的查询是:
select * from tbl
group by field1,field2
order by field(field3,"CHEAP") desc;
仅给我两行 field3="Cheap" 作为“分组依据”正在考虑 ID=2 而不是 ID=1
谁能帮我解决这个问题?
提前致谢。
【问题讨论】:
-
您的查询是什么?
-
为什么要删除 2 而不是 1?
-
我想确保结果中包含 field3 = "Cheap" 的所有行。我想我应该使用某种子查询而不是 group by。
-
为什么要在第三个字段中显示记录为
Cheap的数据时要对第一个和第二个字段进行分组? -
只是试图区分第一个和第二个字段并按第三个字段排序。我不确定正确的方法。