VB.Net SQL 查询 - 我正在尝试连接两列,但我 运行 遇到了问题
VB.Net SQL Query - I am trying to Concatenate two columns however I am running into issues
下面是我正在尝试执行的查询。我得到一个错误
ClassItem is not a column name.
请有人告诉我我在这个查询中哪里出错了。
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%'
您不能在同一查询中重复使用别名。一种简单的解决方案是使用子查询:
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%'
您不能在 where
子句中重用 select
子句中定义的列 - 此处为 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%'
请注意,我还删除了 table 别名,它实际上在查询中不需要,并且与列别名相同 - 尽管 SQL 支持它,但这有点令人困惑.如果出于某种原因需要为 table 添加别名,请使用另一个别名。
下面是我正在尝试执行的查询。我得到一个错误
ClassItem is not a column name.
请有人告诉我我在这个查询中哪里出错了。
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%'
您不能在同一查询中重复使用别名。一种简单的解决方案是使用子查询:
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%'
您不能在 where
子句中重用 select
子句中定义的列 - 此处为 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%'
请注意,我还删除了 table 别名,它实际上在查询中不需要,并且与列别名相同 - 尽管 SQL 支持它,但这有点令人困惑.如果出于某种原因需要为 table 添加别名,请使用另一个别名。