union all 和where条件一起使用查询数据不对的问题
来源:互联网 发布:linux改用户名命令 编辑:程序博客网 时间:2024/06/12 21:38
最近写sql的时候,需要两张表结合一起查询数据,并且根据条件从查询到的数据中只取一条,结果没有取到数据。
表一 test1
表二 test2
查询语句是这样的:
select id ,name from test1 union select id, name from test 2 where id = 4limit 1
这个sql的目的是,从两张表中,取出id = 4 的数据,如果有多条,只取一条。
但是查询结果是:
经过分析发现,这条sql等效于下面:
select id ,name from test1 union ( select id, name from test 2 where id = 4 )limit 1
这条sql(下面这个),查询结果是:
select id ,name from test1 union ( select id, name from test 2 where id = 4 )
然后limit 1, 取出来的就是第一条,即张三-1
所以这条sql应该修改成下面:
第一种修改方式:
select id ,name from test1 where id = 4 union select id, name from test 2 where id = 4 limit 1
第二种修改方式:
select t.* from (select id ,name from test1 union select id, name from test 2 ) t where t.id = 4 limit 1
这两种修改方式都能正确查询到结果。
记录一下,防止后面再犯这种错误。
阅读全文
0 0
- union all 和where条件一起使用查询数据不对的问题
- Mysql联合查询UNION和UNION ALL的使用介绍
- Mysql联合查询UNION和UNION ALL的使用介绍
- 数据库查询优化(使用union 和 union all 的区别)
- Mysql联合查询UNION和UNION ALL的使用介绍
- Mysql联合查询UNION和UNION ALL的使用介绍
- Mysql联合查询UNION和UNION ALL的使用介绍
- Mysql联合查询UNION和UNION ALL的使用介
- Mysql联合查询UNION和UNION ALL的使用介绍
- Mysql联合查询union和union all的使用介绍
- Mysql联合查询UNION和UNION ALL的使用介绍
- Mysql联合查询union和union all的使用介绍
- Mysql联合查询UNION和UNION ALL的使用介绍 可以查询出多张没有关联关系的表的数据
- 常用查询条件\分组 group by\having和where的区别\union查询
- Oracle 查询使用union all 与 使用条件or 的查询效率比较
- Hive UNION ALL的使用和Hive子查询
- union和union all的使用
- union all和order by一起使用出问题
- 添加购物车弧形动画
- git学习之:eclipse项目提交到gitHub
- Retrofit联网报错:Retrofit: Invalid % sequence at XXXX的解决方法
- Linux+Nginx+php7 redis扩展安装
- 用Delphi+DirectShow实现的视频播放器,可用于游戏片头播放
- union all 和where条件一起使用查询数据不对的问题
- 消息队列的使用场景
- Oracle表分区分为四种:范围分区,散列分区,列表分区和复合分区
- 数组题目练习
- 测试建模:功能列表(Function List)
- 获取F7值对象的详细信息
- 基于TextRank算法提取关键词——Java实现
- javamail 发邮件
- URI编码与解码