coldfusion - Coldfusion Query OF Query 生成的记录多于预期
问题描述
这个真的难倒我
我有 3 个查询
查询一:
使用一系列 where 语句完成查询
查询 2 是查询 1(减去所有 where 语句),因为我决定创建一个或多个查询
查询 3 是查询的查询,它在 from 语句中引用查询 2,然后使用 where 语句过滤从查询 2 收到的结果
我希望查询 1 和 3 的结果是相同的,但查询的查询输出比查询 1 多近 1500 条记录
任何建议为什么请赐教
<CFQUERY datasource="#Application.Workflow#" name="query1">
SELECT
*
FROM
Campaigns
INNER JOIN
CampaignReceipients
ON
Campaigns.CampaignId=CampaignReceipients.CampaignId
WHERE
Campaigns.CampaignId = 191
AND
ClientMobilePhone <> ''
AND
ClientEmailAddress like '%@%'
AND
ClientBusinessPhone is null
AND
ClientHomePhone is null
AND
AssignedToDate is null
</CFQUERY>
<CFQUERY datasource="#Application.Workflow#" name="query2">
SELECT
*
FROM
Campaigns
INNER JOIN
CampaignReceipients
ON
Campaigns.CampaignId=CampaignReceipients.CampaignId
WHERE
Campaigns.CampaignId = 191
</CFQUERY>
<cfquery dbtype="query" name="query3">
SELECT
*
FROM
query2
WHERE
ClientMobilePhone <> ''
AND
ClientEmailAddress like '%@%'
AND
ClientBusinessPhone is null
AND
ClientHomePhone is null
AND
AssignedToDate is null
</cfquery>
解决方案
在没有看到您的数据或您的数据库服务器类型的情况下,我仍然相信这是由于查询的 CF 查询如何处理NULL
字符串比较中的值。
使用您的原始数据源级别查询,比较WHERE ClientMobilePhone <> ''
将忽略所有记录WHERE ClientMobilePhone IS NULL
。
而对于 CF QoQ,WHERE ClientMobilePhone <> ''
将返回 ClientMobilePhone 为 NULL 或非空字符串的记录。
这里不支持SQL ISNULL()
/ IFNULL()
,但可以单独测试 NULL;您可以通过在问题中的代码中添加第四个查询来确认这是否确实发生了:
<cfquery dbtype="query" name="query4">
SELECT
*
FROM
query2
WHERE
ClientMobilePhone <> '' AND ClientMobilePhone IS NOT NULL
AND
ClientEmailAddress like '%@%'
AND
ClientBusinessPhone is null
AND
ClientHomePhone is null
AND
AssignedToDate is null
</cfquery>
推荐阅读
- java - Android运行构建错误:实现Inappmessaging-display时
- vba - 为什么 Cells(x,y).Value 在 Excel VBA 中为非空单元格返回空?
- ansible - 如何在 Ansible 上查看当前任务状态
- angular - 如何在角度 6 的 mat-list-item 上使用 disabled 属性?
- jboss - xmlstarlet 删除wildfly 扩展或子系统或值?
- amazon-web-services - 将 Alexa 语音服务集成到我们现有的产品中
- c# - MVC Net Core侧边栏导航菜单放置在_Layout.cshtml中
- java - 如何通过使用超类来减少代码?
- github - 在 Github 上通过所有检查后,合并按钮被禁用
- google-cloud-platform - 可以使用谷歌云CDN缓存视频