如何解决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 举报,一经查实,本站将立刻删除。