mysql - 如何在查询输出中添加一个字段(针对每个返回的记录),其中包含我的查询返回的总数或记录?
问题描述
我不太喜欢 SQL,并且在处理可以返回 0,1,>1 记录作为输出的 MySql 查询时遇到以下问题。
我必须添加一个包含总行数的字段(每行)。因此,例如,如果我的查询返回的总数或记录总数为 4,则record_number字段将在所有返回的行中包含此值。
这是我的查询:
SELECT
LS.id AS livestock_id,
LS.parent_livestock_species_id AS parent_livestock_species_id,
LS.livestock_species_name_en AS livestock_species_name_en,
IFNULL(LSN.livestock_species_name, LS.livestock_species_name_en) AS livestock_species_name,
LSN.description AS description,
LS.image_link AS image_link,
count(*) AS record_number
FROM LivestockSpecies AS LS
LEFT JOIN LivestockSpeciesName AS LSN
ON LSN.livestock_species_id = LS.id AND LSN.language_id = 1
WHERE
LS.id = 1
OR
LS.parent_livestock_species_id = 1
以这种方式做我得到这个错误信息:
#42000In aggregated query without GROUP BY, expression #1 of SELECT list contains nonaggregated column 'digital_services_DB.LS.id'; this is incompatible with sql_mode=only_full_group_by
为什么?我该如何解决?
解决方案
我猜语言表不会改变行数(这是合理的,因为left join
),所以你可以在from
or中添加一个子查询select
:
select . . .
(select count(*) from LivestockSpecies ls2 where ls2.id = 1 or ls2.parent_livestock_species_id = 1
) as total_number
在 MySQL 8.0 中,您可以使用窗口函数,因此更恰当地计算为:
select . . .
count(*) over () as total_number
推荐阅读
- typescript - 打字稿,无法处理缺失属性的联合。[tsserver 2339] 类型上不存在属性“数据”
- python - 找出哪个迭代函数得到最大值?
- windows - 在 Windows 上没有可执行文件的情况下如何执行服务?
- python - How to use Axios/Vue.js to call data from SQLite/Django backend?
- c# - 无法打开 SQL .MDF 文件,因为它是 852 版
- java - 我无法在 jlist 中显示数组列表
- react-native - React-native redux 状态更改不更新(在视图中?)[初学者]
- akka - 如何将数据从队列传递给客户端?
- neo4j - 实体列表之间存在关系
- php - Codeigniter :比较两个日期并将其显示在带有列表的表格上