sql / coldfusion选择具有重复字段的行

时间:2012-04-29 14:37:15

标签: 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>

3 个答案:

答案 0 :(得分: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;

答案 1 :(得分:1)

使用exists(选择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>

答案 2 :(得分: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>