为什么我在SQL查询中出错?

时间:2017-03-19 10:55:15

标签: mysql sql

我在phpMyAdmin的视图表中进行了查询。当我尝试进行查询时,结果是错误的。这是我的疑问:

SELECT TahunMasuk, 
  COUNT(CASE WHEN `JenisKelamin`=`Perempuan`) AS `Perempuan`,
  COUNT(CASE WHEN `JenisKelamin`=`Laki-laki`) AS `Laki-laki`
FROM jeniskelaminreal
GROUP BY TahunMasuk;

错误消息

#1054 - Unknown column 'Perempuan' in 'field list'

我在视图表中使用left join。这是我的名为 jeniskelaminreal

的视图表

enter image description here

我可以做些什么来获得结果?提前谢谢

6 个答案:

答案 0 :(得分:1)

在比较值时,您使用的是反引号而不是双引号。此外,您的CASE语句缺少THENEND,请尝试以下操作:

SELECT TahunMasuk, 
  COUNT(CASE WHEN `JenisKelamin`='Perempuan' THEN 1 END) AS 'Perempuan',
  COUNT(CASE WHEN `JenisKelamin`='Laki-laki' THEN 1 END) AS 'Laki-laki'
FROM jeniskelaminreal
GROUP BY TahunMasuk;

答案 1 :(得分:1)

case具有以下语法:

COUNT(CASE WHEN `JenisKelamin`= 'Perempuan' THEN 1 ELSE null END) AS `Perempuan`

或默认情况下else部分为null

COUNT(CASE WHEN `JenisKelamin`= 'Perempuan' THEN 1 END) AS `Perempuan`

在MySQL中你也可以

SUM(JenisKelamin = 'Perempuan') AS `Perempuan`

字符串也用引号分隔,而不是反引号。

答案 2 :(得分:1)

您错过了THENEND个关键字。此外,字符串常量需要用单引号括起来:

SELECT TahunMasuk, 
       COUNT(CASE WHEN JenisKelamin = 'Perempuan' THEN 1 END) AS `Perempuan`,
       COUNT(CASE WHEN JenisKelamin = 'Laki-laki' THEN 1 END) AS `Laki-laki`
FROM jeniskelaminreal
GROUP BY TahunMasuk;

MySQL(您似乎正在使用)有一个方便的简写:

SELECT TahunMasuk, 
       SUM(CJenisKelamin = 'Perempua') AS Perempuan,
       SUM(JenisKelamin = 'Laki-laki') AS `Laki-laki`
FROM jeniskelaminreal
GROUP BY TahunMasuk;

答案 3 :(得分:1)

'Perempuan''Laki-laki'

中替换“with”
SELECT TahunMasuk, 
  COUNT(CASE WHEN `JenisKelamin`='Perempuan' THEN 1 END) AS 'Perempuan',
  COUNT(CASE WHEN `JenisKelamin`='Laki-laki' THEN 1 END) AS 'Laki-laki'
FROM jeniskelaminreal
GROUP BY TahunMasuk;

答案 4 :(得分:0)

CASE语句缺少ELSE部分,后引用也是一个问题,所以它应该是这样的。

SELECT TahunMasuk, 
  COUNT(CASE WHEN `JenisKelamin`='Perempuan' THEN 1 END) AS `Perempuan`,
  COUNT(CASE WHEN `JenisKelamin`='Laki-laki' THEN 1 END) AS `Laki-laki`
FROM jeniskelaminreal
GROUP BY TahunMasuk;

答案 5 :(得分:0)

根据mysql文档,语法为

theRawContactIdOfTheExistingContact

CASE case_value
WHEN when_value THEN statement_list
[WHEN when_value THEN statement_list] ...
[ELSE statement_list]
END CASE

READ HERE

您的查询看起来像这样

CASE
WHEN search_condition THEN statement_list
[WHEN search_condition THEN statement_list] ...
[ELSE statement_list]
END CASE

您也可以使用SELECT TahunMasuk, COUNT(CASE WHEN `JenisKelamin`='Perempuan' THEN 1 END) AS 'Perempuan', COUNT(CASE WHEN `JenisKelamin`='Laki-laki' THEN 1 END) AS 'Laki-laki' FROM jeniskelaminreal GROUP BY TahunMasuk; field()来计算这些结果

sum()