2012-04-29 55 views
0

這裏是我的表SQL/ColdFusion的選擇與行重複字段

 
ProductID  Display  UPC 
10   0    0553 
14   0    0753 
11   1    0753 
17   1    0453 

如果你注意到,行2和3具有相同的UPC。我想選擇display = 0和upc的所有行與display = 1的行相同。所以在我的表中,我只想選擇第2行。這是我迄今爲止的Coldfusion代碼,不起作用。請指教。

<cfquery name="GetData" datasource="#Application.ds#" dbtype="ODBC" username="#Application.UserName#" password="#Application.Password#"> 
Select ProductID, Display, UPC 
From Products 
Where Display = 0 
... 
</cfquery> 

回答

1

您是否在尋找正確的查詢?我會說有不止一種方法來實現這一目標。對於我來說,一個人在你的榜樣和mysql的工作:

SELECT 
    p1.ProductID, p1.Display, p1.UPC 
FROM 
    Products as p1, Products as p2 
WHERE 
    p1.UPC=p2.UPC and p1.Display=0 and p2.Display=1; 
0

以前的答案應該工作或去子選擇選項

<cfquery name="GetData" datasource="#Application.ds#" dbtype="ODBC" username="#Application.UserName#" password="#Application.Password#"> 
Select t1.ProductID, t1.Display, t1.UPC 
From Products t1 
Where t1.Display = 0 and 
     t1.UPC = (Select t2.UPC 
        From Products t2 
       Where t2.Display = 1)    
</cfquery> 
1

使用存在(選擇1 ......)更有效當你使用它的一個子選擇或連接是一個過濾器。

<cfquery name="GetData" datasource="#Application.ds#" dbtype="ODBC" username="#Application.UserName#" password="#Application.Password#"> 
select ProductID, Display, UPC 
from Products p 
where Display = 0 
and exists (
    select 1 from Products p2 
    where p.UPC = p2.UPC 
    and p2.Display = 1 
) 
</cfquery>