mysql 怎样在存储过程中实现逐条判断输出结果

create procedure tt()
begin
if exists(select x.a from t1 x where x.a='a1' limit 1) then
if exists(select y.b from t1 y where y.b='b2' limit 1) then
if exists(select z.c from t1 z where z.c='c3' limit 1) then
if exists(select n.d from t1 n where n.d='d4' limit 1) then
select x.a,y.b,z.c,n.d from t1 x,t1 y,t1 z,t1 n;
end if;
end if;
end if;
end if;
end

然后我自己写了一下 出来结果是一个笛卡尔积 判断语句跟没加一样 怎么正确写一下啊
大概就是一张表四个字段 ABCD 然后各自有四个值 a1 a2 a3 a4 b1 b2 b3 b4 c1 c2 c3 c4 d1 d2 d3 d4
q请教一下怎样实现判断A 是否为a1 如果是a1 然后a1与b2关联 B字段就是b2 如果B字段是b2然后判断一下C字段是否是c3 如果是c3那么D字段就是d4

最后输出结果是a1b2c3d4 我知道可以吧t1表虚拟成四张表然后做一个关联 限定一下ABCD的值也可以求出来a1b2c3d4但是与要求用的方法不一样 有没有大佬看看这个功能怎么实现 谢谢了图片说明

5个回答

是不是这个意思
图片说明
图片说明

weixin_42790422
铁头娃呀 是这个意思 但是不用where来限定条件 用判断语句来达到这个结果前面我说了这样用笛卡尔积来按条件查找我自己也会写的 就是不知道用判断语句去输出这个结果我才来大佬聚集地求答案的
大约 2 年之前 回复

题目是什么?你把题目发出来,我写一下

weixin_42790422
铁头娃呀 用条件判断实现 where a=a1,b=b2,c=c3,d=d4 就是判断A是否是a1如果是的话B就可以是b2 B如果是b2的话C就可以是c3,C如果是c3的话 D就是d4最后要的结果a1b2c3d4
大约 2 年之前 回复

不明白你想要干嘛,你要表达的意思是?
select * from t1 where a='a1' and b='b1' and c='c1' and d='d1'

weixin_42790422
铁头娃呀 用条件判断实现 where a=a1,b=b2,c=c3,d=d4 就是判断A是否是a1如果是的话B就可以是b2 B如果是b2的话C就可以是c3,C如果是c3的话 D就是d4最后要的结果a1b2c3d4
大约 2 年之前 回复

可以把你的题目发出来吗?“q请教一下怎样实现判断A 是否为a1 如果是a1 然后a1与b2关联 B字段就是b2 如果B字段是b2然后判断一下C字段是否是c3 如果是c3那么D字段就是d4“,你最后要得到什么?

weixin_42790422
铁头娃呀 得到的结果是a1b2c3d4
大约 2 年之前 回复

你自己都还不清楚怎么提问,是记录变成列?

weixin_42790422
铁头娃呀 条件判断 输出结果 我感觉我说的很清楚呀
大约 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问