INNER JOIN 遇到了一些问题。
表 ref_vg_ou :
mplus
表 vignette_ou :
IO
mySQL请求:
GHCi> readLn `mplus` readLn :: IO Integer
0
0
GHCi> readLn `mplus` readLn :: IO Integer
foo
1
1
GHCi> readLn `mplus` readLn :: IO Integer
foo
bar
*** Exception: user error (Prelude.readIO: no parse)
我的控制台返回错误:
“ id_vg”字段列表不明确
我不明白为什么我的“ id_vg”不明确?我尝试使用Alias,但是遇到了一个新错误:
id_vg | ref
12 1
13 1
14 2
错误:
'vg.vg_id'子句未知
答案 0 :(得分:1)
vg_id
列,但是没有id_vg
列。 id_vg
列,因此收到“模棱两可”的列错误消息。 MySQL无法识别选择哪一个(没有给出正确的表名或别名引用)。 请尝试以下操作:
SELECT vg.id_vg, vg.ou_name, vg.ou_info
FROM vignette_ou AS vg
INNER JOIN ref_vg_ou AS ref
ON vg.id_vg = ref.id_vg
WHERE ref.ref = ?
答案 1 :(得分:0)
由于要在ON子句中连接两个相同名称的列,因此可以将替代JOIN语法与 USING 以及匹配列用于JOIN条件(documentation )。这也将不需要表别名来标识SELECT中的id_vg
来自哪个表。
所以
SELECT id_vg, ou_name, ou_info
FROM vignette_ou
INNER JOIN ref_vg_ou USING (id_vg)
WHERE ref = ?
在这里也可以使用。