c# - 确保我的 SQL 查询是正确的

标签 c# sql-server linq linq-to-entities

我正在尝试运行下面的查询,但不知何故我做错了什么。我不是 SQL Server 方面的专家,但据我所知,我使用的代码没有问题,但如果有人能看到我的问题,请向我指出。

INSERT INTO
    [dbo].[StockItems] ([StockCode],[Description],[Mass],[UnitCost],[MinimumStock])
SELECT DISTINCT
    [s].[New_StockCode],
    RTRIM(LTRIM(ISNULL([s].[New_Description], ''))),
    [s].[Mass],
    CAST([s].[ UnitCost ] AS float),
    CAST([s].[Minimum Stock] AS float)
FROM
    [ExcelItemStock].[dbo].[StockItems$] AS [s]
WHERE
    [s].[New_StockCode] NOT IN (
        SELECT
            [StockCode]
        FROM
            [dbo].[StockItems]
        ) AND
    [s].[New_StockCode] IS NOT NULL AND
    [s].[ UnitCost ] IS NOT NULL AND
    [s].[Minimum Stock] IS NOT NULL

错误:

The select list for the INSERT statement contains fewer items than the insert list. The number of SELECT values must match the number of INSERT columns.

Incorrect syntax near the keyword 'AND'.

我在INSERTSELECT 中使用了相同数量的项目。我也看不出我的问题出在哪里与 AND 错误有关?

我正在使用 linq-to-entities,下面是我的类(class),如果它有任何帮助的话:

public class StockItem
{
    public StockItem()
    {
        SectionGroups = new HashSet<SectionGroup>();
    }
    public int Id { get; set; }


    private string _stockCode;
    [Index(IsUnique = true)]
    [StringLength(450)]
    [Required]
    public string StockCode
    {
        get { return _stockCode; }
        set { _stockCode = value.ToUpper(); }
    }

    public string Description { get; set; }

    public virtual ICollection<SectionGroup> SectionGroups { get; set; }

    public double? Mass { get; set; }

    public double UnitCost { get; set; }

    public double? MinimumStock { get; set; }

    public override string ToString()
    {
        return StockCode + " - " + Description;
    }
}

编辑: 添加了建议的 并得到错误:

Incorrect syntax near 's'.

@Sachu -- 这是一张图片,也许可以更好地解释我为什么使用 StockItems$

enter image description here

我找到了我的问题!很抱歉浪费了你所有的时间。我忘记将额外的列添加到我的 ExcelItemStock 数据库中的 dbo.StockItems$ 表中。完全是我的错!

最佳答案

您的 SELECT 语句中的问题:

    CAST([s].[ UnitCost ] AS float)
    CAST([s].[Minimum Stock] AS float)

缺少这些线之间的共同点

关于c# - 确保我的 SQL 查询是正确的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30888026/

相关文章:

c# - Entity Framework : Dynamically generate multiple OR condition on JOIN

c# - 检查现有 ID,更新或插入 CheckBox 中的值

C# 在 mvc - 4 项目中为客户端用户资源文件的最佳方式

c# - 将 XML 文件添加到 Visual Studio 2008 项目的优点和用处

c# - 如何记录谓词表达式?

c# - linq,选择列作为 IEnumerable<DataRow>

c# - 为什么非静态类中有所有静态方法/变量?

sql-server - 在 SQL 事件探查器中显示行计数

sql-server - SQL Server 如何更新列以获得所需的行号

javascript - 如何在 JS 或 C# 中使用输入按钮更新 html 表格行的 SQL 数据?