Mysql SQL-同时使用group by和details进行查询
我有如下sql查询:Mysql SQL-同时使用group by和details进行查询,mysql,sql,Mysql,Sql,我有如下sql查询: SELECT sum(amount) AS sum, incomes_category_assigned_to_users.name AS category_name FROM incomes INNER JOIN incomes_category_assigned_to_users on incomes.income_category_assigned_to_user_id = incomes_category_assigned_to_u
SELECT sum(amount) AS sum, incomes_category_assigned_to_users.name AS category_name
FROM incomes
INNER JOIN incomes_category_assigned_to_users on incomes.income_category_assigned_to_user_id = incomes_category_assigned_to_users.id
WHERE (incomes.user_id = :user_id AND date_of_income >= :first_date AND date_of_income <= :second_date)
GROUP BY incomes.income_category_assigned_to_user_id
ORDER BY sum DESC;
选择总和(金额)作为总和,收入\u类别\u分配给\u用户。名称作为类别\u名称
收入
内部联接收入\u类别\u分配给收入上的用户。收入\u类别\u分配给用户\u id=收入\u类别\u分配给用户。id
其中(incomers.user_id=:user_id AND date_of_income>=:first_date AND date_of_of_incomeMySQL不支持数组。一种方法是将值放入字符串中:
SELECT SUM(amount) AS sum,
GROUP_CONCAT(amount) as amounts,
icau.name AS category_name
FROM incomes i JOIN
incomes_category_assigned_to_users icau
ON i.income_category_assigned_to_user_id = icau.id
WHERE i.user_id = :user_id AND
date_of_income >= :first_date AND
date_of_income <= :second_date
GROUP BY icau.name
ORDER BY sum DESC;
选择总和(金额)作为总和,
集团成本(金额)作为金额,
icau.name作为类别名称
从我的收入中加入
收入\类别\分配给\用户\ icau
在i.income\u category\u上分配给用户\u id=icau.id
其中i.user\u id=:user\u id和
收入日期>=:首次收入日期和
收入的日期另一个选项可能是使用和ROLLUP
来获取高级总和()。因此,您选择单独的行(而不是分组总和),然后使用和ROLLUP
也将返回总和。然后您只需识别这些行(即如果incomes.name为null)并相应地输出它们。