Mysql 如何创建一个接受用户Id并返回用户’;s的全名和职业以及1个电子邮件地址
我在尝试调用/选择过程时出现此错误 where子句中的“userid”列不明确Mysql 如何创建一个接受用户Id并返回用户’;s的全名和职业以及1个电子邮件地址,mysql,sql,stored-procedures,Mysql,Sql,Stored Procedures,我在尝试调用/选择过程时出现此错误 where子句中的“userid”列不明确 在MySQL中编写代码时,有三条规则: 在查询中始终限定列名 始终通过命名约定来区分参数名称 始终通过命名约定来区分局部变量 因此,我将更像这样编写代码: delimiter $$ create procedure userInformation(in uID varchar(50), out fullname varchar(50), out job varchar(50), out email varcha
在MySQL中编写代码时,有三条规则:
- 在查询中始终限定列名
- 始终通过命名约定来区分参数名称
- 始终通过命名约定来区分局部变量
delimiter $$
create procedure userInformation(in uID varchar(50), out fullname varchar(50), out job varchar(50), out email varchar(50))
begin
select concat(firstname, ' ', lastname) into FULLNAME
from users
where userid = uID;
select occupation into JOB
from occupation
join users on users.occupationID = occupation.occupationid
where userid = uID;
select useremail into EMAIL from useremail
join users on useremail.userid = users.userid
where userid = uID
limit 1;
END$$
delimiter ;
call userInformation('00002380-3e3b-11e3-bbac-c42c03098f6c', @fullnam, @job, @email);
select @fullname, @job, @email;
感谢您将其正确格式化,我们正试图找出在何处编辑它@Gordon Linoff如果有一个
userid
列放入多个表中,请使用表名来解决它,这是第三个选择歧义在这里,在useremail上加入用户。userid=users.userid where userid=uID
。和你的问题无关,但是,如果buddy有多个电子邮件帐户,你就是在随机抽取一个。这可能不是一个好主意。这几乎奏效了,必须将“where o.userid=in_uID”更改为“where子句”中的where o.occuptiondunnown列“o.userid”是我输入此代码时得到的,如果在作业中更改iget null,则职业表没有用户ID(有职业ID);users表有usersid,useremail表也有usersid。将o.userid更改为u.userid,效果很好,非常感谢!我现在终于理解了材料!!
create procedure userInformation (
in in_uID varchar(50),
out out_fullname varchar(50),
out out_job varchar(50),
out out_email varchar(50)
)
begin
select concat(u.firstname, ' ', u.lastname)
into out_fullname
from users u
where u.userid = in_uID;
select o.occupation
into out_job
from occupation o join
users u
on u.occupationID = o.occupationid
where u.userid = in_uID;
select ue.useremail
into out_email
from useremail ue JOIN
users u
on ue.userid = u.userid
where ue.userid = in_uID
limit 1;
end$$