在使用MySQL的Scala主动脉中,似乎多次在查询中连接同一表并使用别名只能返回查询中包含的最后一个表的值。
似乎最后一个联接会自动覆盖所有先前的值,即使它具有不同的别名。
请参见下面的示例。
说我有一张桌子mytable
id | name
1 | name1
2 | name2
在mymaintable
中有一条记录:myId1 = 1
和myId2 = 2
如果我愿意
SELECT
t1.*, t2.*
FROM mymaintable AS m
JOIN mytable AS t1 ON t1.id = m.myId1
JOIN mytable AS t2 ON t2.id = m.myId2
我希望有1, name1, 2, name2
现在在Anorm中,我将定义别名,以便
val aliaser = new ColumnAliaser {
def as1 = ColumnAliaser.withPattern((0 to 2).toSet, "t1.")
def as2 = ColumnAliaser.withPattern((2 to 4).toSet, "t2.")
def apply(column: (Int, ColumnName)): Option[String] = as1(column).orElse(as2(column))
}
,结果将为2, name2, 2, name2
这是一个错误吗?我做错什么了吗?
可能值得注意的是,我使用了2.5.3的定律