在SQL中使用3列计数查询

时间:2012-11-05 16:58:36

标签: mysql sql mysql-workbench

我有一个名为&#34的数据库;图书馆"表格名为" Medien"。 在其中有多列我需要查询以下名为Fname,Mname,Lname和ISBN的coloumn。

我想用ISBN和没有ISBN来计算数据库总记录?

  • Fname =作者的名字
  • Mname =作者的中间名
  • Lname =作者的姓氏

我想算一下ISBN的记录数和没有ISBN的记录数

我执行了以下命令

 Select COUNT(ISBN) as Fname FROM  `library`.`MEDIEN` where  Fname = `isbn`;
 Select COUNT(ISBN) as Mname FROM  `library`.`MEDIEN` where  Mname = `isbn`;
 Select COUNT(ISBN) as Lname FROM  `library`.`MEDIEN` where  Lname = `isbn`;
 Select COUNT(ISBN) as NtFname FROM `library`.`MEDIEN`where  Fname != `isbn`;
 Select COUNT(ISBN) as NtMname FROM `library`.`MEDIEN`where  Mname != `isbn`;
 Select COUNT(ISBN) as NtLname FROM `library`.`MEDIEN`where  Lname != `isbn`;

我不确定我是否执行了正确的命令。 因为某些ISBN记录分别只有Fname,Mname或Fname,Lname或Mname,Lname或Fname,Lname,Mname。

例如

第一作者

Fname:asher Lname:baig

已经写了5本书记录,但其中两本记录了ISBN

总产量将为ISBN = 2

欲望输出将是这样的

ISBN=value and NtISBN=value

请帮我解决这个问题

2 个答案:

答案 0 :(得分:0)

您可能只想使用带有OR子句的两个查询。这样可以避免某些行被计算两次:

Select COUNT(ISBN) as count FROM library.MEDIEN where
 verf1 = 'isbn'
 OR verf2 = 'isbn'
 OR verf3 = 'isbn';

然后当然是反过来的:

Select COUNT(ISBN) as count FROM library.MEDIEN where verf1 != 'isbn'
   AND verf2 != 'isbn'
   AND verf3 != 'isbn';

答案 1 :(得分:0)

您可以尝试查询

SELECT SUM (CASE WHEN (verf1 = 'isbn' OR verf2 = 'isbn' OR verf3 = 'isbn') THEN 1 ELSE 0 END ) ISBNCount
        SUM (CASE WHEN (verf1 = 'isbn' OR verf2 = 'isbn' OR verf3 = 'isbn') THEN 0 ELSE 1 END ) NtISBNC 
         FROM library.MEDIEN