【发布时间】:2013-09-15 12:41:00
【问题描述】:
我对 MYSQL 的了解比较基础,希望能提供以下帮助:
子记录架构
标识 |记录 |元素 |标题 |姓名 |类型 |价值
上表存储了通过网络表单提交的数据。
- 每一行是一个字段(即“电话号码”、“电子邮件”、“主题”等),其中“标题”是字段的标签,“值”是提交字段的内容
- “记录”标识每个唯一提交的表单,它是下面阐明的“记录”表 (records.id) 的外键(同一个表单提交多次生成多个唯一记录)
- 要知道提交了哪个表单,我们需要查看另一个表格
记录架构
标识 |提交 |表格 |标题 |名称
- id对于每个提交都是唯一的(不是每个表单都是唯一的,同一个表单提交多次会产生多个唯一的id)
- form 是另一个表 (forms.id) 的外键,它定义了表单的结构(所有字段等),并没有真正简化检索我需要的数据。
- records.name 是一个文本字符串,用于标识每个唯一表单,这是选择我们要查找的表单所必需的
我需要找到多次提交同一表单的所有用户(通过电子邮件),这里有一些进一步的说明:
- 所有电子邮件地址(subrecords.value where subrecords.title = 'email')
- 提交了多个相同的表单(由 records.name = "string-form-name" 标识)。
- subrecords.record = record.id 仅用于连接表(每个表单提交都是唯一的并生成一个新的record.id,因此对于识别用户和表单都没有帮助)。
- records.form 是一个外键 = forms.id(它似乎没有用,因为它需要查看另一个表使查询复杂化,使用 records.name 来识别表单似乎更简单)李>
感谢另一个用户,我有这个:
SELECT value as email
,record
,COUNT(*) as form_count
FROM subrecords
WHERE title = 'email'
AND record IN (SELECT id
FROM records
WHERE name = 'form_name'
)
GROUP BY value
,record
HAVING COUNT(*) > 1
它返回一个空值,但我无法缩小如何改进它以使其工作。 谢谢
【问题讨论】:
标签: mysql sql duplicates