MySQL запрос, чтобы найти сумму разных имен

0

Я использую подобные запросы (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 запросов. возможно ли это?

  • 0
    Что вы делаете с 10 запросами - нужно ли сравнивать их суммы?
Теги:

2 ответа

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
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.

  • 0
    Я подозреваю, что «salil1» на самом деле не имя студента, а просто неудачный пример ОП.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню