【问题标题】:SQL Query That Worked With .MDB Database Not Working With MySQL Database适用于 .MDB 数据库的 SQL 查询不适用于 MySQL 数据库
【发布时间】:2017-06-29 22:00:04
【问题描述】:

我是一名新手技术人员,有一个带有 .MDB (MS-Access) 数据库的 ColdFusion 网站,该数据库由我的托管服务新转换为 MySQL。一个曾经完美运行多年的查询在转换为 MySQL 后不再运行,并抛出错误消息“每个派生表必须有自己的别名”。

作为帮助,以下是查询的作用——并且到目前为止做得非常完美:我有一个会员数据库。每个成员最多有四个电子邮件地址,因此每个记录在数据库中有四个列,每个电子邮件地址与电子邮件服务提供商域(Comcast.net、gmail.com、aol.com 等)相关联。我使用查询结果单独列出所有电子邮件域以及与每个域关联的成员电子邮件地址的总数(Comcast.net 12、gmail.com 26、aol.com 13 等)。

我需要在这个查询中进行最少的修改以使其与 MySQL 一起工作?感谢您的帮助!

<cfquery name="cfqGetEmailServiceProviderDomains" datasource="membership_database">
SELECT email_service_provider, COUNT(email_service_provider) AS Instances
FROM
(
    SELECT MID(email_address1, INSTR(email_address1, '@') + 1) AS email_service_provider
    FROM tblMembers
    WHERE email_address1_active = 1 
    AND email_address1 IS NOT NULL
    UNION ALL
    SELECT MID(email_address2, INSTR(email_address2, '@') + 1) AS email_service_provider
    FROM tblMembers
    WHERE email_address2_active = 1 
    AND email_address2 IS NOT NULL
    UNION ALL
    SELECT MID(email_address3, INSTR(email_address3, '@') + 1) AS email_service_provider
    FROM tblMembers
    WHERE email_address3_active = 1 
    AND email_address3 IS NOT NULL
    UNION ALL
    SELECT MID(email_address4, INSTR(email_address4, '@') + 1) AS email_service_provider
    FROM tblMembers
    WHERE email_address4_active = 1 
    AND email_address4 IS NOT NULL
)
GROUP BY email_service_provider
ORDER BY email_service_provider ASC
</cfquery>

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    试着把别名放在桌子上

    SELECT ...
    FROM (
    ...
    ) table_alias
    GROUP BY ...
    ORDER BY ...
    

    【讨论】:

    • “table_alias”是指一个实际的表,还是只是一个临时创建的“虚拟表”以便查询可以工作?
    • 这只是一个随机名称,例如“a”。一些 dbms,如 SQL Server,需要一个表别名。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-20
    • 1970-01-01
    • 2019-06-02
    • 2021-09-08
    • 1970-01-01
    相关资源
    最近更新 更多