MySQL-使用联接计算查询结果时出现重复列名错误

MySQL-使用联接计算查询结果时出现重复列名错误,mysql,count,Mysql,Count,我试图计算在我们正在构建的应用程序上运行的每个查询生成的结果的数量,这些查询是动态的,并且是由应用程序生成的,因此我们无法控制语法 这些查询有时非常繁重,我们需要在执行它们之前添加限制,但在添加这些限制之前,我们需要知道最终计数 我们发现了一种非常好的方法,可以在不执行结果的情况下获得每个查询的行数: Select count(*) from ($query) as q_count; 其中,$query是应用程序生成的任何给定动态查询。这非常有效,直到查询包含一个联接,并且在两个联接表中有一个

我试图计算在我们正在构建的应用程序上运行的每个查询生成的结果的数量,这些查询是动态的,并且是由应用程序生成的,因此我们无法控制语法

这些查询有时非常繁重,我们需要在执行它们之前添加限制,但在添加这些限制之前,我们需要知道最终计数

我们发现了一种非常好的方法,可以在不执行结果的情况下获得每个查询的行数:

Select count(*) from ($query) as q_count;
其中,
$query
是应用程序生成的任何给定动态查询。这非常有效,直到查询包含一个联接,并且在两个联接表中有一个同名的列

例如,让我们想象一下具有CLID(客户机ID)的表客户机和具有CLID(作为外键)的表发票

以下查询返回所有发票号码和客户机名称:

SELECT * FROM CLIENTS LEFT JOIN INVOICES on CLIENTS.CLID = INVOICES.CLID
但是,当我尝试使用($query)中的
选择count(*)作为q_count
对它们进行计数时,
$query
就是上面的查询,我得到以下错误:

select count(*) from (SELECT * FROM CLIENTS LEFT JOIN INVOICES on CLIENTS.CLID = INVOICES.CLID) as q_count 
错误:

重复的列名“CLID”

我理解为什么会发生这种情况,在上面的示例中,我猜CLID变得模棱两可,count(*)无法区分两者,我的问题是寻找解决方案或解决方法,请记住,我无法控制查询(
$query

必须有一种方法,因为phpMyAdmin能够计算结果的数量,而无需获取所有数据,而不管查询是什么


有什么想法吗?

“显然这些查询是动态的”-一点也不明显,你能澄清一下吗?@p.Salmon他正在编写一个通用例程,查询来自调用者。你可以执行查询,然后调用
选择行数()
获取上次查询返回的行数。@Barmar我需要在执行查询之前知道,这些查询非常繁重,我们需要在执行它们之前添加限制,在添加这些限制之前,我们需要知道最终结果的长度,thanksI怀疑phpMyAdmin解析并修改查询以实现其功能。“显然,这些查询是动态的”-一点也不明显,你能澄清一下吗?@P.Salmon他正在编写一个通用例程,查询来自调用者。你可以执行查询,然后调用
SELECT ROW_COUNT()
要获取上一次查询返回的行数。@Barmar我需要在执行查询之前知道,这些查询非常繁重,我们需要在执行它们之前添加限制,在添加这些限制之前,我们需要知道最终结果的长度,thanksI怀疑phpMyAdmin会解析并修改查询以执行它所做的操作。