0

这是我的桌子

产品 ID 显示 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>
4

3 回答 3

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;
于 2012-04-29T15:10:25.220 回答
1

当您只使用过滤器时,使用 exists(select 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>
于 2012-04-30T06:19:36.250 回答
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>
于 2012-04-29T17:32:50.507 回答