这是我的表
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>
答案 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>