如何在没有子查询的单个SQL查询中汇总这些记录?

时间:2018-08-21 16:03:41

标签: mysql

我有一个基本的SQL接口,可以从MySQL数据库创建报表,该报表包含对我创建的表单的响应。该接口不允许子查询。

表单中有五个字段(字段1-字段5),人们可以选择“第一选择”,“第二选择”等形式的偏好。

我的理想输出将总结如下选择:

field1, first choice, 5
field1, second choice, 3
field1, third choice, 0
...
field5, fourth choice, 2
field5, fifth choice, 1

但是,任何可以总结多少人选择每个字段的选项的布局都可以。

是否有实现此目标的方法,或者我需要五个报告,每个字段一个(这很容易用五个SELECT field[n], count(*) FROM table WHERE 1 GROUP BY field[n]样式的报告,用1-5代替n)

编辑:样机表定义。这不是完整的表格,并且由于我无权访问实际表格,因此可能不是100%正确。 (例如,我想字段1-5实际上是VARCHARTEXT字段,但我不知道。ENUM最好地说明了选择。)

CREATE TABLE `Example` (
  `EntryID` int(11) NOT NULL,
  `field1` enum('First Choice','Second Choice','Third Choice','Fourth Choice','Fifth Choice','Not Interested') NOT NULL,
  `field2` enum('First Choice','Second Choice','Third Choice','Fourth Choice','Fifth Choice','Not Interested') NOT NULL,
  `field3` enum('First Choice','Second Choice','Third Choice','Fourth Choice','Fifth Choice','Not Interested') NOT NULL,
  `field4` enum('First Choice','Second Choice','Third Choice','Fourth Choice','Fifth Choice','Not Interested') NOT NULL,
  `field5` enum('First Choice','Second Choice','Third Choice','Fourth Choice','Fifth Choice','Not Interested') NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

ALTER TABLE `Example`
  ADD PRIMARY KEY (`EntryID`);

ALTER TABLE `Example`
  MODIFY `EntryID` int(11) NOT NULL AUTO_INCREMENT;

0 个答案:

没有答案