mysql查询查找不同名称的总和

时间:2009-12-15 07:04:42

标签: mysql

我使用类似的查询(10)作为以下查询(修改)来查找总和

SELECT sum(amount) AS amount 
  FROM `students` 
 WHERE sex='M' 
    && name in ('salil', 'anil', 'gaikwad')

...和

SELECT sum(amount) AS amount 
  FROM `students` 
 WHERE sex='M' 
    && name in ('salil1', 'anil1', 'gaikwad1')

我想对上述10个查询进行单一查询。有可能吗?

2 个答案:

答案 0 :(得分:1)

尝试这样的事情

SELECT sum(amount) AS amount 
FROM    students  INNER JOIN
        (SELECT 'salil%' Val UNION SELECT 'anil%' UNION SELECT 'gaikwad%') s ON students.NAME LIKE s.Val
WHERE   sex='M' 

这允许您使用第二个中的值与 LIKE 一起加入。

答案 1 :(得分:1)

您可以使用UNION

SELECT 'subset1', sum(amount) AS amount FROM students WHERE sex='M' and name in ('salil', 'anil', 'gaikwad')
UNION
SELECT 'subset2', sum(amount) AS amount FROM students WHERE sex='M' and name in ('salil1', 'anil1', 'gaikwad1')

但是,您可能会查询这些学生群体的原因,也许是anil,salil和gaikwad是一组学生。如果是这样,您应该在数据库结构中反映出来,而不是在您的代码中。

你可以在学生表中添加一个字段'SUbset'或'Group'或者其他任何东西,所以它看起来像这样:

name group_id
salil 1
anil 1
gaikwad 1
salil1 2
...

然后你可以做

select group_id, sum(amount) from students group by group_id