SQL noob在这里。我正在使用MS Access查询路灯数据表以排除特定大小的灯光,并且只有灯具类型是“Cobra”的变体。有人能给我一些关于我可能做错的指导吗?
我可以制作我需要被排除在外的灯光:
SELECT *
FROM Lighting
WHERE Lighting.TYPE_FIXTURE LIKE '*cobra*'
AND Lighting.SIZ < '16'
足够简单。我认为这很容易调整一下,让它排除这些而不是产生它们。
SELECT *
FROM Lighting
WHERE Lighting.TYPE_FIXTURE NOT IN ('*Cobra*')
AND Lighting.SIZ NOT IN ('10', '15')
此代码不包括我需要排除的灯光,也包括100或150w的所有其他类型的灯光。对于我的生活,我无法弄清楚如何排除150w或更少的眼镜蛇光。
通过广泛的互联网研究,我尝试使用IIF表达式生成一个值为0或1的临时列,具体取决于是否需要排除,
SELECT *
,IIf(Lighting.TYPE_FIXTURE LIKE "*cobra*" AND Lighting.SIZ < 15, 0, 1) AS IncludeFlag
INTO #MyTempTable
FROM Lighting
SELECT *
FROM #MyTempTable
WHERE IncludeFlag = 1
但我唯一的结果是一条错误消息,我不知道如何解决。我花了一整天时间在这一个问题上,我开始把头发拉出来了!
答案 0 :(得分:1)
试试这个......
SELECT *
FROM Lighting
WHERE (Lighting.TYPE_FIXTURE NOT LIKE '*cobra*'
AND Lighting.SIZ < '16')
答案 1 :(得分:0)
从TRUE和TRUE转换为NOT(TRUE和TRUE)涉及在括号内分配NOT并将AND切换为OR。
以下内容可为您提供所需的结果:
SELECT *
FROM Lighting
WHERE Lighting.TYPE_FIXTURE Not Like '*cobra*' OR Lighting.SIZ>='16';