以下是我要执行的查询。我收到错误消息
ClassItem不是列名。
请让别人知道我在此查询中出了错。
SELECT
*, CONCAT([Cabin], [Item]) AS ClassItem
FROM
FQR_RAW_1 AS ClassItem
WHERE
ClassItem IN ('%JCHML - Child Meal%', '%WCHML - Child Meal%', '%YMC - Beef%', '%YMC - Chicken%', '%YMC - Fish / Shellfish%', '%YMC - Pork%', '%YMC - Regional Taste (Non Veg)%', '%YMC - Regional Taste (Veg)%', '%YMC - Vegetarian%')
AND [Origin Region] LIKE 'USA%'
答案 0 :(得分:0)
您不能在同一查询中重复使用别名。一种简单的解决方案是使用子查询:
SELECT r.*
FROM (SELECT r.*, CONCAT([Cabin],[Item]) as ClassItem
FROM FQR_RAW_1 AS r
) r
WHERE ClassItem IN ('%JCHML - Child Meal%', '%WCHML - Child Meal%', '%YMC - Beef%', '%YMC - Chicken%', '%YMC - Fish / Shellfish%', '%YMC - Pork%', '%YMC - Regional Taste (Non Veg)%', '%YMC - Regional Taste (Veg)%', '%YMC - Vegetarian%') AND
[Origin Region] LIKE 'USA%'
答案 1 :(得分:0)
您不能重用select
子句的where
子句中定义的列-在这里是ClassItem
。
另一个问题是您不能将IN
与通配符%
一起使用,这似乎是您的意图。您可能正在寻找一系列OR
条件:
SELECT *, CONCAT([Cabin], [Item]) as ClassItem
FROM FQR_RAW_1
WHERE
(
CONCAT([Cabin], [Item]) LIKE '%JCHML - Child Meal%'
OR CONCAT([Cabin], [Item]) LIKE '%WCHML - Child Meal%'
OR CONCAT([Cabin], [Item]) LIKE '%YMC - Beef%'
OR CONCAT([Cabin], [Item]) LIKE '%YMC - Chicken%'
OR CONCAT([Cabin], [Item]) LIKE '%YMC - Fish / Shellfish%'
OR CONCAT([Cabin], [Item]) LIKE '%YMC - Pork%',
OR CONCAT([Cabin], [Item]) LIKE '%YMC - Regional Taste (Non Veg)%'
OR CONCAT([Cabin], [Item]) LIKE '%YMC - Regional Taste (Veg)%'
OR CONCAT([Cabin], [Item]) LIKE '%YMC - Vegetarian%'
)
AND [Origin Region] LIKE 'USA%'
请注意,我还删除了表别名,该别名实际上在查询中是不需要的,并且与列别名相同-尽管SQL支持,但这有点令人困惑。如果出于某种原因需要为表添加别名,请使用另一个别名。