【发布时间】:2016-12-23 18:42:08
【问题描述】:
首先,我想说的是,我还是一个编写 SQL 查询的新手。我彻底搜索了有关此错误的答案,并且得到了很多答案,但似乎没有任何帮助,或者我会说我真的不知道如何将解决方案应用于我的。
这是我的挑战,我有一个应用程序表,它存储具有一些唯一列的申请人记录,例如 (dl_number,parent_id,person_id)。 parent_id 使用他/她的第一个记录来跟踪单个申请人的历史记录,并且每个申请人都应该有一个唯一的 dl_number,但由于某些原因,一些申请人的 dl_number(s) 不是唯一的,因此需要用更改 dl_number(s)。
下面是 SQL 查询,它得到了 [sql 错误 (1241) 操作数应该包含 1 列] 错误。
SELECT id,application_id,dl_number,surname,firstname,othername,birth_date,status_id,expiry_date,person_id,COUNT(DISTINCT(dl_number,parent_id,birth_date)) AS NumOccurrences
FROM tbl_dl_application
WHERE status_id > 1
GROUP BY dl_number,parent_id,birth_date
HAVING NumOccurrences > 1
请提供有关如何解决此问题的任何帮助,或解决此问题的更好方法。
【问题讨论】:
-
添加一些示例表数据,和预期的结果!
-
您按 2 个字段分组并选择了更多。
-
可能是导致这个
COUNT(DISTINCT(dl_number,parent_id,birth_date)) -
你的分组依据是向后的...其他列应该在 GROUP BY 子句中,而不是聚合函数的参数。 IE。切换到
GROUP BY id, application_id, dl_number, surname, firstname, othername, birth_date, status_id, expiry_date, person_id。 -
@jarlh。感谢您的快速响应,我添加了一个示例表
标签: mysql sql mysql-error-1241