微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MySQL查询:使用UNION并将行号作为SELECT的一部分

如何解决MySQL查询:使用UNION并将行号作为SELECT的一部分

|| 我有一个联合查询,如下所示: (选择t.id,t.name,c.company AS所有者,t.creation_date AS日期,t.notes  从工具t,客户端c  其中t.id_customer = \ '15 \'和t.trash_flag = \'1 \')   联盟 (选择f.id,f.name,CONCAT(m.first_name,\'\',m.last_name)AS所有者,f.date,f.notes  从文件f,元m  在((f.acl = 0)或(f.acl = 1 AND \'1 \'= TRUE)OR(f.acl = 2 AND f.id = \'7 \'))AND f.id = \ '15 \'AND f.trash_flag = \'1 \'AND m.user_id = f.id_user)  ORDER BY \'名称\'\'ASC \'限制0,20 一切正常,但我有两个问题: 如何在整个结果集中添加一列以提供行号 我可以不使用UNION来执行此操作吗?高级加入? 感谢您的宝贵时间MysqL专家!     

解决方法

我现在无法对其进行严格测试,但是从我发现的结果来看,以下方法可能有效: 参考:行号变量 SQL语句
SELECT  @rownum := @rownum + 1 rownum,t.*
FROM    (
            (SELECT t.id,t.name,c.company AS owner,t.creation_date AS date,t.notes 
            FROM    tool t,client c 
            WHERE   t.id_customer = \'15\' 
                    AND t.trash_flag = \'1\' 
            ) UNION (
            SELECT  f.id,f.name,CONCAT(m.first_name,\' \',m.last_name) AS owner,f.date,f.notes 
            FROM    file f,meta m 
            WHERE   ((f.acl = 0) OR (f.acl = 1 AND \'1\' = TRUE) OR (f.acl = 2 AND f.id = \'7\')) AND f.id = \'15\' AND f.trash_flag = \'1\' AND m.user_id = f.id_user) 
            )
        ) t,(SELECT @rownum := 0) r
ORDER BY 
        \'name\' ASC
LIMIT   0,20 
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。