写了一个存储过程,搜索某个单词,同时返回这个用户对这个单词的状态。
到下面Update的时候,报错找不到列名jef_user_word.english。
但这个列名真的存在我发誓,我都能用这个列名select出数据来,就是加了where以后就不识别列名了。
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;求大神解决,急啊就快交作业了

解决方案 »

  1.   

    拿出来有where和没有where的语句在命令行执行下
      

  2.   

    SELECT jef_user_word.english FROM jef_user_word
    有结果SELECT * FROM tttt WHERE (tttt.eng)=(jef_user_word.english) AND (jef_user_word.user_id='test user') AND (jef_user_word.status=1)
    报错[42S22][1054] Unknown column 'jef_user_word.english' in 'where clause'
      

  3.   

    SELECT * FROM tttt WHERE (tttt.eng)=(jef_user_word.english) AND (jef_user_word.user_id='test user') AND (jef_user_word.status=1)-------select  a.*
    from tttt a ,jef_user_word b
    where a.eng=b.english and b.user_id='test_user' and b.status=1;
      

  4.   

    SELECT * FROM tttt WHERE (tttt.eng)=(jef_user_word.english) AND (jef_user_word.user_id='test user') AND (jef_user_word.status=1)仅从这个SQL语句,显然只用了一张表tttt 
    而这个tttt 表中楼主确定有字段名  jef_user_word.english 吗? 估计是另外一张表jef_user_word吧。