2 glzmzd glzmzd 于 2015.05.27 14:59 提问

求教一条SQL语句实现功能的问题

(第一遍问的有写不对)
SQL语句是否可以实现这样的功能: (设有表A、B,A中有数据f1和f2)
select f1 from A where f2='aa';
当f1=1时,执行SELECT 语句1
当f1=2时,执行select语句2
这样的话如何实现?

5个回答

danielinbiti
danielinbiti   Ds   Rxr 2015.05.27 15:18
已采纳
 select * from 表A where exists(select 1 from 表C WHERE 表C.字段=1)
union
select * from 表B where exists(select 1 from 表C WHERE 表C.字段=2)
danielinbiti
danielinbiti 回复glzmzd: 不客气,有时间顺手采纳一下
2 年多之前 回复
glzmzd
glzmzd 十分感谢!用这个方法解决了的!~
2 年多之前 回复
u012216727
u012216727   Ds   Rxr 2015.05.27 15:01

可以的,用T-SQL,你可以查查。

如果回答对你有帮助,请采纳

albertbush
albertbush   2015.05.27 15:05

以MSSQL为例


IF EXISTS(SELECT * FROM A WHERE F1=1)
BEGIN
    SELECT1
END
IF EXISTS(SELECT * FROM A WHERE F1=2)
BEGIN
    SELECT2
END

按你的意思,=1和=2未必是矛盾的,因此不用ELSE

glzmzd
glzmzd 回复不是阿尔伯特: 哦哦。。多谢了!~
2 年多之前 回复
albertbush
albertbush 回复glzmzd: 这个是MSSQL的啊。mysql有点区别的
2 年多之前 回复
glzmzd
glzmzd 回复不是阿尔伯特: 为什么mysql命令行运行报错啊。。
2 年多之前 回复
glzmzd
glzmzd 回复不是阿尔伯特: 为什么mysql命令行运行报错啊。。
2 年多之前 回复
glzmzd
glzmzd 回复不是阿尔伯特: 哦哦!想明白了!多谢多谢!!
2 年多之前 回复
albertbush
albertbush 回复albertbush: 你没有说f2是主键,所以,不唯一。如果F2是主键,可以按@guwei4037 的做,当然我的办法仍然可行,但如果是主键的话,会稍重复(因为做了两遍select)
2 年多之前 回复
albertbush
albertbush 回复glzmzd: 呵呵,一样的啊。可以改成select * from A where f2='aa' AND f1=1
2 年多之前 回复
glzmzd
glzmzd 回复不是阿尔伯特: 表格中F1和F2是有多行的,我希望的是通过F2选出对应的F1,然后判断F1的数值来决定执行哪一个SELECT语句
2 年多之前 回复
glzmzd
glzmzd 回复不是阿尔伯特: 我第一遍问的不够具体。。我重新编辑了一遍问题,求指教了!
2 年多之前 回复
albertbush
albertbush 回复glzmzd: 是的,如果存在就执行下面的BEGIN/END里的内容
2 年多之前 回复
glzmzd
glzmzd exists的用法是不是存在此数据则执行begin的语句?
2 年多之前 回复
glzmzd
glzmzd exists的用法是不是存在此数据则执行begin的语句?
2 年多之前 回复
guwei4037
guwei4037   Ds   Rxr 2015.05.27 15:07

你得学会写存储过程、函数、触发器等等这些东西。你的需求就是小case了。

大概:
declare @value nvarchar(10)
select xx into @value from A where rowid = 1
if(@value == 1)
select 语句1
if(@value ==2)
select语句2

glzmzd
glzmzd 谢谢!~刚刚才开始接触编程神马的,要学的东西浩瀚无穷啊。。
2 年多之前 回复
edouardzyc
edouardzyc   2015.05.27 16:29

SELECT 语句1 SELECT 语句2 具体是什么

Csdn user default icon
上传中...
上传图片
插入图片