create_time
from smc_person p
left join smc_car sc on
我不想根据p.person_id来排序。可以采用如下写法:
SELECT * FROM(
select DISTINCT ON(p.person_id)
p.person_id as personId,
p.person_type as personType,
p.job_number as jobNumber,
p.name,
p.idcard as idcard,
p.sex,
p.company,
p.owner_company as ownerCompany,
p.phone,
p.status,
p.update_time,
p.create_time
from smc_person p
left join smc_car sc on ((sc.driver ~ p.person_id::VARCHAR) = 't' and sc.status = '1')
where p.status = '1')t
order by p.create_time desc, p.update_time desc nulls last, p.name asc
问题描述:PostgreSQL 中使用distinct on() 分组时报错// sql语句select DISTINCT ON(p.person_id)p.person_id as personId, p.person_type as personType, p.job_number as jobNumber, p.name, p.idcard
当一条sql语句中同时使用DISTINCT和created_at时,可能会出现
ERROR: for SELECT DISTINCT, ORDER BY expressions must appear in select list错误信息
例如:select DISTINCT id from insure ORDER BY created_at;
翻译意思就是:错误:选择不同,O
解决办法:sqlserver中如果同时用order by和distinct,那order by后面的字段就必须出现在selcet的字段中。这个问题只有在sqlserver中才会有,mysql中是不会有这个问题的。
如果这样写会提示错误:
select distinct name from user order by id
应该这样写:
select distinct id,name from us...
SELECT distinct example_column1 FROM test.example_table where delisting_date>now() and product ='CU.SHF' ORDER BY `example_column2` ASC;
报错信息如下:(MySQL-8.0.16可以正常运行,MySQL-5.7报错)
Error Code: 3...
SQL SELECT DISTINCT 语句
在表中,一个列可能会包含多个重复值,有时您也许希望仅仅列出不同(distinct)的值。
DISTINCT 关键词用于返回唯一不同的值。
SQL SELECT DISTINCT 语法
SELECT DISTINCT column_name,column_name
FROM table_name;
在本教程中,我们将使用 RUNOOB 样本数据库。
下面是选自 “Websites” 表的数据:
+----+--------------+-
SELECT DISTINCT ON ( expression [, ...] )
把记录根据[, …]的值进行分组,分组之后仅返回每一组的第一行。
需要注意的是,如果不指定ORDER BY子句,返回的第一条记录是不确定的。如果你使用了ORDER BY 子句,那么[, …]里面的值必须靠近ORDER BY子句的最左边。
create table student(id ser...
在pgsql使用过程中有一个需求,是需要根据一个字段去重其他字段不去重,然后查询出表中的字段。这里就要说到group by、distinct两种。
group by吧,就是需要使用聚合函数,但我只有某一个字段(name字段)有需求,其他的字段按照原来的展示。但是在使用聚合函数不符合预期,所以就放弃。
distinct,这个是只能去重一个字段,但是不能查询出表中字段。比如我就只是针对name去重...
SELECT DISTINCT select_list … (NULL在DISTINCT [ON] 中视为相等)
show code postgres=# create table t3 (id int );
CREATE TABLE
postgres=# insert into t3 values (1);
INSERT 0 1
postgres=# insert into t3 values (
1. DISTINCT和ORDER BY的顺序
在MySQL中,DISTINCT和ORDER BY的顺序非常重要。如果你想让结果集按照某个字段去重,并按照另一个字段排序,那么应该先使用DISTINCT,再使用ORDER BY。例如:
SELECT DISTINCT column1, column2 FROM table1 ORDER BY column2;
这个查询会先对column1去重,然后按照column2排序。
2. ORDER BY的字段必须在SELECT中出现
如果你想按照某个字段排序,那么这个字段必须在SELECT中出现。例如:
SELECT DISTINCT column1 FROM table1 ORDER BY column2;
这个查询会报错,因为column2不在SELECT中出现。
3. 使用子查询解决问题
如果在某些情况下,你无法在同一个查询中使用DISTINCT和ORDER BY,可以考虑使用子查询来解决问题。例如:
SELECT column1, column2 FROM (SELECT DISTINCT column1 FROM table1) t1 ORDER BY column2;
这个查询先对column1去重,然后将结果作为子查询,再按照column2排序。