2013-12-16 54 views
0

我正在嘗試使用複合變量就像一個變量一樣簡單。 我正在進行自我加入,並且正在嘗試將具有特定值的另一家公司和號碼與同一家公司和號碼進行匹配。如何將SQL複合/多值變量等同於另一個多值複合變量

route(company,num,stop,pos) 每個「num」(或公交路線號)在其公交線路上有多個「stop」(停靠點號碼地址),並且1到X「pos」命令)。

select a.company, a.num 
from route as a 
join route as b 
on a.company = b.company and a.num = b.num 
where (a.company, a.num) = any(
    select a.company, a.num 
    from a 
    join b 
    where a.stop = XXX, b.stop = YYY) 

路由在表中由公司和num作爲複合主鍵在表中是唯一的。我想知道哪些路線在XXX和YYY停止。無論如何,我可以使用ANY功能來做到這一點。我知道如何做到這一點,只是在哪裏發表聲明,然後小組合作。我的問題是明確「其中(a.company,a.num)=任意(選擇a.company,a.num ......」

回答

0

相信你正在使用MSSQL。對某個或一些人來說,可以比較只有標量值,而不是像(a.company,a.num)這樣的對。

如果你堅持使用ANY,你可以使用逗號連接這兩個值 - 因爲它們是唯一的,所連接的值也是唯一的。是這樣的:?

select a.company, a.num 
from route as a 
join route as b 
on a.company = b.company and a.num = b.num 
where (a.company + ',' + a.num) = any(
    select a.company + ',' + a.num 
    from a 
    join b 
    where a.stop = XXX, b.stop = YYY) 
+0

請問這幾乎做同樣的事情 (CAST(a.company如爲nvarchar(50))+演員(a.num如爲nvarchar(50))) – user3105906

+0

我?同意你必須在加入varchar之前將值轉換爲varchar(如果它們不是varchar或nvarchar類型),但是可以使用某些參數來加入這兩個值,否則它可能會被複制,例如companyId = 12和num = 3,companyId = 1和num = 23,它們將產生與123相同的結果... – Rex

相關問題