【发布时间】:2010-12-12 19:57:15
【问题描述】:
PostgreSQL 即将让我打小动物。我正在为 MySQL 执行以下 SQL 语句,以获取唯一的城市/州/国家/地区列表。
SELECT DISTINCT city
, state
, country
FROM events
WHERE (city > '')
AND (number_id = 123)
ORDER BY occured_at ASC
但是这样做会使 PostgreSQL 抛出这个错误:
PGError: ERROR: for SELECT DISTINCT, ORDER BY 表达式必须出现在选择列表中
但是,如果我将occured_at 添加到 SELECT 中,那么它会扼杀取回唯一列表。
使用 MySQL 和第一次查询的结果:
BEDFORD PARK IL US
ADDISON IL US
HOUSTON TX US
如果我在 SELECT 中添加发生的结果:
BEDFORD PARK IL US 2009-11-02 19:10:00
BEDFORD PARK IL US 2009-11-02 21:40:00
ADDISON IL US 2009-11-02 22:37:00
ADDISON IL US 2009-11-03 00:22:00
ADDISON IL US 2009-11-03 01:35:00
HOUSTON TX US 2009-11-03 01:36:00
第一组结果是我最终尝试使用 PostgreSQL 获得的结果。
【问题讨论】:
标签: sql mysql database postgresql