CREATE DEFINER=`root`@`%` PROCEDURE `search_user_word27`(IN eng VARCHAr(50), IN user_id0 VARCHAr(64))
BEGIN
DROp TABLE IF EXISTS tttt;
CREATE TEMPORARY TABLE tttt(
eng VARCHAr(50) PRIMARY KEY,
chn VARCHAr(255),
st INT DEFAULT 0
);
INSERT INTO tttt(eng, chn) SELECT english,chinese FROM jef_word WHERe english LIKE CONCAt('%',eng,'%');
UPDATe tttt SET tttt.st =1 WHERe (tttt.eng=jef.jef_user_word.english) AND (jef_user_word.user_id=user_id0) AND (jef_user_word.status=1);
UPDATE tttt SET tttt.st =-1 WHERe ((tttt.eng=jef.jef_user_word.english) AND (jef_user_word.user_id=user_id0) AND (jef_user_word.status=-1));
SELECT eng,chn,st FROM tttt;
END;
写了一个存储过程,搜索某个单词,同时返回这个用户对这个单词的状态。
到下面Update的时候,报错找不到列名jef_user_word.english。
但这个列名真的存在我发誓,我都能用这个列名select出数据来,就是加了where以后就不识别列名了。
求大神解决,急啊就快交作业了,在线等
MySQL存储过程找不到列名,列名确实存在
答案:3 悬赏:10 手机版
解决时间 2021-03-18 18:47
- 提问者网友:温旧梦泪无声
- 2021-03-18 08:33
最佳答案
- 五星知识达人网友:杯酒困英雄
- 2021-03-18 09:46
jef_user_word.english是列名?为什么要带个点呢?好吧!那是你的自由...
报错可能是因为带点的列名造成的语法报错。
要这样写 `jef_user_word.english` 就可以了。
报错可能是因为带点的列名造成的语法报错。
要这样写 `jef_user_word.english` 就可以了。
全部回答
- 1楼网友:一袍清酒付
- 2021-03-18 12:32
alter table abc change num num int primary key auto_increment
前提是你的表中不能存在主键,否则请使用:
alter table abc change num num int auto_increment
一般情况下增长都是主键
- 2楼网友:风格不统一
- 2021-03-18 11:02
UPDATe 语句汇总用到了2个表tttt,jef 但这 2个表没有关联
要是用
UPDATE tttt SET tttt.st =1
from
jef_user_word,tttt,jef
WHERe (tttt.eng=jef.jef_user_word.english) AND (jef_user_word.user_id=user_id0) AND (jef_user_word.status=1);
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯