社区
MySQL
帖子详情
联合查询的问题,第一次为真就不查询第二次,如果为否需要查询第二次。
fisheep_works
2012-02-27 09:39:11
select if(1,-1,(select 2));
如果第二次查询的是一个字段 这样就可以了。
但如果第二次需要返回两个字段如何处理呢?!
select if(1,-1,(select 2,3));这样就不行咯!。。。。
...全文
80
15
打赏
收藏
联合查询的问题,第一次为真就不查询第二次,如果为否需要查询第二次。
select if(1,-1,(select 2)); 如果第二次查询的是一个字段 这样就可以了。 但如果第二次需要返回两个字段如何处理呢?! select if(1,-1,(select 2,3));这样就不行咯!。。。。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ACMAIN_CHM
2012-02-28
打赏
举报
回复
select * from a where id=1
union all
select * from b where (select count(*) from table_a)=0
rucypli
2012-02-28
打赏
举报
回复
select 2,3这个返回的算是一个结果集
wwwwb
2012-02-28
打赏
举报
回复
[Quote=引用 4 楼 fisheep_works 的回复:]
select if((select count(*) from table_a)>0,-1,(select `A` from table_b));
意思是先查询表a,如果存在就不用再查询了,如果不存在就查询表b,如果返回表b的一个字段是可以的。
问题是如何返回表b的两个字段?!
[/Quote]
子查询只能返回1个字段,不能返回两个,用变通的方法吧,用SP也可以
珠海-天堂
2012-02-28
打赏
举报
回复
用存储过程来做吧。
wwwwb
2012-02-28
打赏
举报
回复
select DISTINCT IF(aa>0,-1,b.a), iF(aa>0,-1,b.b) from
(select count(*) as a from table_a) a,table_b b
fisheep_works
2012-02-28
打赏
举报
回复
select if((select count(*) from table_a)>0,-1,(select `A` from table_b));
意思是先查询表a,如果存在就不用再查询了,如果不存在就查询表b,如果返回表b的一个字段是可以的。
问题是如何返回表b的两个字段?!
wwwwb
2012-02-28
打赏
举报
回复
子查询中只能返回1个字段,select 2,3是两个字段
写成2个字段即可
select if(1,-1,(select 2)),if(1,-1,(select 3))
具体问题是什么
ACMAIN_CHM
2012-02-28
打赏
举报
回复
select if(1,-1,(select 2)),if(1,-1,(select 3));
只能分开。
但这个应用非常奇怪,建议楼主举实际例子,这样可以根据实际应用看看有没有更适合的方案。
fisheep_works
2012-02-28
打赏
举报
回复
谢谢你了,暂时先就这样吧。。。
wwwwb
2012-02-28
打赏
举报
回复
是,因为你要根据(select count(*) as a from table_a)的结果来判断取值
fisheep_works
2012-02-28
打赏
举报
回复
每个查询不是独立分开的
fisheep_works
2012-02-28
打赏
举报
回复
储存过程,有顾虑,数据库是一个线程查询,但程序是多线程轮流进行查询的。
fisheep_works
2012-02-28
打赏
举报
回复
[Quote=引用 5 楼 wwwwb 的回复:]
select DISTINCT IF(aa>0,-1,b.a), iF(aa>0,-1,b.b) from
(select count(*) as a from table_a) a,table_b b
[/Quote]
小弟不懂DISTINCT的作用,
在不管DISTINCT的意义的情况下
select IF(a.a>0,-1,b.a), iF(a.a>0,-1,b.b) from (select count(*) as a from table_a) a,table_b b
这样是达到要求了。
但我有个疑问:这样不是就执行了两次查询么?
wwwwb
2012-02-28
打赏
举报
回复
SP是指split切割的意思么?!
存储过程
fisheep_works
2012-02-28
打赏
举报
回复
[Quote=引用 7 楼 wwwwb 的回复:]
引用 4 楼 fisheep_works 的回复:
select if((select count(*) from table_a)>0,-1,(select `A` from table_b));
意思是先查询表a,如果存在就不用再查询了,如果不存在就查询表b,如果返回表b的一个字段是可以的。
问题是如何返回表b的两个字段?!
子查询只能返回1个字段,不能返回两个,用变……
[/Quote]
SP是指split切割的意思么?!
我也想过把两个字段用小数点结合起来,然后取得数据后再分开。
现在来请教前辈是不是有更好的办法解决。
C#SQL
查询
技术
本课程以SQL Server 2008 R2数据库系统为例,全面介绍SQL
查询
技术,包括select语句,Where子句,Order By子句,Group By子句,having语句,TOP和PERCENT限制
查询
结果,在
查询
中使用OR和AND运算符,聚合函数应用,多...
mybatis学习五-mybatis的多表
联合
查询
也就是
查询
所有的订单, 并每一个订单都联系上用户数据, 并再一次附上订单的id 也就是说, 从后面看, 就是每个订单id对应的用户信息, 从前面看就是每个订单id的订单信息 为什么说这里是一对一的关系呢? 因为, 订单是副...
mysql
联合
查询
_MySQL
联合
查询
MySQL
联合
查询
联合
查询
:union,将多次
查询
(多条select语句)的结果,在字段数相同的情况下,在记录的层次上进行拼接。基本语法
联合
查询
由多条select语句构成,每条select语句获取的字段数相同,但与字段类型无关。...
sql中的
联合
查询
首先,通过一个实例来讲一下
联合
查询
(关键词 union) 语法: select ......... union select ........ union ....... select * from empoloyees where email like "%a%" or department_id >90; 改用...
SQL入门之第十二讲——UNION
联合
查询
UNION
联合
查询
定义: 之前的JOIN连接,是可以对多个表进行横向列的合并,而不能对按行进行纵向合并。 UNION操作符,则是可以将多个
查询
结果,按行进行纵向合并 基本语法: SELECT <字段名> FROM <表名&...
MySQL
56,679
社区成员
56,709
社区内容
发帖
与我相关
我的任务
MySQL
MySQL相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MySQL相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章