0

我有一个包含四个字段的表:ab和。cd

我想要一个像这样的查询:

select distinct a, b from t;

该文档建议类似

(k/select my-table
          (k/modifier "DISTINCT")
          (k/fields :a :b))

但是生成的 SQL 是这样的:

SELECT distinct a, b, c, d FROM my_table;

我想要的是:

SELECT distinct a, b FROM my_table;

如何将 distinct 修饰符限制为仅两个字段?

尝试使用不同的修饰符值(例如DISTINCT (a, b))会导致 SQL 查询错误。

这是一个完整的例子:

(k/defentity my-table (k/entity-fields :a :b :c :d))

(k/sql-only (k/select my-table (k/fields :a :b)
                               (k/modifier "DISTINCT")))

"SELECT DISTINCT `my-table`.`a`,
                 `my-table`.`b`,
                 `my-table`.`c`,
                 `my-table`.`d`,
                 `my-table`.`a`,
                 `my-table`.`b` FROM `my-table`"
4

1 回答 1

0

SQL 关键字DISTINCT在大多数(全部?)数据库中对整个列进行操作,包括 MySQL 和 SQL Server。因此,至少在那些数据库中,没有办法DISTINCT在字段子集上使用。

一个不同的查询,可能像SQL 中建议的那些 - 'DISTINCT' 仅基于某些列?可能会为您提供所需的东西。

于 2015-03-18T13:08:31.460 回答