【问题标题】:VB.Net SQL Query - I am trying to Concatenate two columns however I am running into issuesVB.Net SQL Query - 我正在尝试连接两列但是我遇到了问题
【发布时间】:2020-08-01 11:01:28
【问题描述】:

以下是我正在尝试执行的查询。我收到一个错误

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%'

【问题讨论】:

  • 用您正在使用的数据库标记您的问题。

标签: sql where-clause sql-like sql-in


【解决方案1】:

您不能在 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%'

请注意,我还删除了表别名,这实际上在查询中不需要,并且与列别名相同 - 尽管 SQL 支持这一点,但这有点令人困惑。如果出于某种原因需要为表设置别名,请使用另一个别名。

【讨论】:

  • 是否有任何理由将 Concat([Cabin], [Item]) 视为 ClassItem ,因为我们从不调用 ClassItem ?
【解决方案2】:

您不能在同一查询中重复使用别名。一种简单的解决方案是使用子查询:

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%'

【讨论】:

  • 后面的“r”是拼写错误还是有意的?
  • @dkettle01。 . .它不是“流浪”。它是一个表别名。
猜你喜欢
  • 2022-12-30
  • 1970-01-01
  • 2013-09-02
  • 2017-08-31
  • 2010-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-04
相关资源
最近更新 更多