itVincent Blog - Java Working Fun!

          技術引領時代!
          posts - 117, comments - 181, trackbacks - 0, articles - 12
           

          "unknown column ... in 'on clause'" in JOIN

           

          HQL執行關聯查詢

          1.創建表格:

               CREATE TABLE a (id INT NOT NULL);

               CREATE TABLE b (id INT NOT NULL);

               CREATE TABLE c (a_id INT NOT NULL, b_id INT NOT NULL);

          2.HQL語句

              Select (c.id, c.a.id, c.b.id) from C c

                  

          3.執行查詢:

               SELECT (c.id, a.id, b.id) FROM A a, B b LEFT JOIN C c ON c.a_id = a.a_id AND c.b_id = b.b_id

          這句話執行應該是沒有錯誤的,但是

          Mysql 5 下執行則會出錯: "ERROR 1054 (42S22): Unknown column 'a.id' in 'on clause'"

          因為mysql下有這樣一個BUG,要把聯合的表用括號包含起來才行:

              SELECT (c.id, a.id, b.id) FROM (A a, B b) LEFT JOIN C c ON c.a_id = a.a_id AND c.b_id = b.b_id

          但是HQL生成就是這樣的語句,怎么辦呢?我們可以改變HQL的寫法來達成生成另一種SQL語句,以避免這種BUG的出錯,select (c.id, a.id, b.id) from C c

              Left join c.a a

              Left join c.b b

          則會生成

              SELECT (c.id, a.id, b.id) FROM A a LEFT JOIN B b LEFT JOIN C c ON c.a_id = a.a_id AND c.b_id = b.b_id

          這樣的話mysql下就不會出錯了

          Feedback

          # re: [原創]"unknown column ... in 'on clause'" in JOIN 解疑  回復  更多評論   

          2008-08-06 17:59 by hfly
          謝謝謝謝!!!!

          # re: [原創]"unknown column ... in 'on clause'" in JOIN 解疑  回復  更多評論   

          2008-08-27 15:32 by itVincent
          不客氣,我也沒想到mysql有這樣一個問題

          # re: [原創]"unknown column ... in 'on clause'" in JOIN 解疑  回復  更多評論   

          2009-03-12 22:12 by kb
          高手。

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 娄烦县| 甘南县| 蓝山县| 巴彦淖尔市| 宣化县| 黄骅市| 茶陵县| 行唐县| 乌拉特中旗| 勐海县| 宁夏| 拉萨市| 浑源县| 牡丹江市| 曲水县| 岚皋县| 米林县| 伽师县| 奎屯市| 临潭县| 佛教| 葫芦岛市| 天津市| 武威市| 静宁县| 鲁山县| 慈溪市| 黔南| 乐至县| 六安市| 鸡西市| 揭西县| 天祝| 宁乡县| 大安市| 田林县| 崇信县| 建昌县| 福贡县| 肃北| 灯塔市|