2012-08-02 42 views
0

我有一个查询如下:比较VARCHAR和整数在MySQL JOIN子句

select q.question, e.filename 
from question q 
join actions a on a.FK_QId = q.PK_Id 
join action_params ap on ap.FK_AId = a.PK_Id 
join envfile e on e.FK_Qid = ap.value 
where e.EnvType = 0 

的问题是JOIN ON条款e.FK_Qid = ap.value其中value为varchar和FK_QId是整数。我知道我必须做一些事情CASTCONVERT,但我尝试失败了什么:

select q.`question`, e.filename 
from question q 
join actions a on a.FK_QId = q.PK_Id 
join action_params ap on ap.FK_AId = a.PK_Id 
join envfile e on CAST(e.FK_Qid as nvarchar(3)) = ap.value 
where e.EnvType = 0 

基本上value领域将有一个像“1”,字符串“2”等,所以其正常的,如果我可以做任何字符串将字符串比较或int转换为int转换。底线是"1" = 1"2" = 2等。

编辑:CAST(e.FK_Qid as char3) = ap.value工作以及..

回答

3

如果apvalue只有像“1”,“2”......这样的值,那么你可以使用你的第一个查询,服务器将自己做一些事情。所有值将被转换为数字,并且您的ON条件将起作用。

+0

是的,它做到了..它叮当早些工作的一些其他问题.. – nawfal 2012-08-02 09:21:29