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 
    

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...