itVincent Blog - Java Working Fun!

          技術(shù)引領(lǐng)時(shí)代!
          posts - 117, comments - 181, trackbacks - 0, articles - 12
           

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

           

          HQL執(zhí)行關(guān)聯(lián)查詢

          1.創(chuàng)建表格:

               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語(yǔ)句

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

                  

          3.執(zhí)行查詢:

               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

          這句話執(zhí)行應(yīng)該是沒(méi)有錯(cuò)誤的,但是

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

          因?yàn)?/span>mysql下有這樣一個(gè)BUG,要把聯(lián)合的表用括號(hào)包含起來(lái)才行:

              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生成就是這樣的語(yǔ)句,怎么辦呢?我們可以改變HQL的寫(xiě)法來(lái)達(dá)成生成另一種SQL語(yǔ)句,以避免這種BUG的出錯(cuò),select (c.id, a.id, b.id) from C c

              Left join c.a a

              Left join c.b b

          則會(huì)生成

              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下就不會(huì)出錯(cuò)了

          Feedback

          # re: [原創(chuàng)]"unknown column ... in 'on clause'" in JOIN 解疑  回復(fù)  更多評(píng)論   

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

          # re: [原創(chuàng)]"unknown column ... in 'on clause'" in JOIN 解疑  回復(fù)  更多評(píng)論   

          2008-08-27 15:32 by itVincent
          不客氣,我也沒(méi)想到mysql有這樣一個(gè)問(wèn)題

          # re: [原創(chuàng)]"unknown column ... in 'on clause'" in JOIN 解疑  回復(fù)  更多評(píng)論   

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

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 松阳县| 昭通市| 化德县| 交城县| 平邑县| 江孜县| 达孜县| 禄丰县| 茶陵县| 德阳市| 富锦市| 湘西| 益阳市| 尚义县| 蒲江县| 淮阳县| 河西区| 赤水市| 涞水县| 扶沟县| 阿瓦提县| 即墨市| 弥渡县| 观塘区| 盱眙县| 安龙县| 周至县| 吉隆县| 内江市| 邻水| 龙山县| 荣昌县| 惠来县| 琼海市| 新宁县| 洪湖市| 鸡东县| 尼勒克县| 台前县| 商都县| 西宁市|