我想在SqlCE数据库上运行类似于此的查询:
SELECT t.Field1, t.Field2
FROM MyTable t
WHERE t.Field1 = @Param
UNION ALL
SELECT t2.Field1, t2.Field2
FROM MyOtherTable t2
WHERE t2.Field1 = @Param
但是,运行此操作会导致错误消息:
重复的参数名称不是 允许。 [参数名称= @Param]
解决方法当然是定义@Param1
和@Param2
并为它们分配相同的值,但这对我来说有点脏。这个问题有更简洁的解决方法吗?
答案 0 :(得分:1)
SELECT * FROM (
SELECT t.Field1, t.Field2
FROM MyTable t
UNION ALL
SELECT t2.Field1, t2.Field2
FROM MyOtherTable t2
) sub
WHERE sub.Field1 = @Param
答案 1 :(得分:0)
仅将参数添加到参数集合中一次。您可以在查询中使用它的次数。
答案 2 :(得分:0)
我从未使用过SQL CE,但也许这会起作用:
DECLARE @P int
SET @P = @Param
SELECT t.Field1, t.Field2
FROM MyTable t
WHERE t.Field1 = @P
UNION ALL
SELECT t2.Field1, t2.Field2
FROM MyOtherTable t2
WHERE t2.Field1 = @P