【问题标题】:Query to get rid of matching records C#查询以摆脱匹配的记录 C#
【发布时间】:2013-07-26 23:43:07
【问题描述】:

我希望能够在 C# Visual Studio 2012 中的 WinForms 应用程序中编写一个不会显示匹配记录的查询。假设我在 Access DB 中有一条记录,

JOHN SMITH MALE   19
JANE DOE   FEMALE 19
JOHN SMITH MALE   19

还有一个类似这样的查询

SELECT a.NAME FROM [NAME] a WHERE a.NAME = JOHN SMITH 
//but returns both records in the table 

我怎样才能只从表中返回一条记录?任何帮助将不胜感激。

【问题讨论】:

  • 你的桌子上有主键吗?
  • 尝试使用带有 NOT IN 语句的子查询。 techonthenet.com/sql/in.php
  • 无意冒犯,Stick,但在过去的一周里,您问了一些非常基本的 SQL 问题。你可能想出去买一本“SQL For Dummies”书或其他东西(不暗示你是个傻瓜,但显然你需要一本解决基本 SQL 问题的书)。对数据集进行重复数据删除几乎是最基本的。

标签: c# sql winforms ms-access


【解决方案1】:

您可以直接在 SQL 中执行此操作。
使用distinct 仅获取不重复的记录

SELECT DISTINCT a.NAME 
FROM your_table a 
WHERE a.NAME = 'JOHN SMITH'

或使用top 仅获取一定数量或记录作为结果

SELECT top 1 a.NAME 
FROM your_table a 
WHERE a.NAME = 'JOHN SMITH'

【讨论】:

  • 我建议直接在 SQL 中执行此操作。
【解决方案2】:

如果我理解正确,您想修改您提供的查询,而不是返回

John Smith
John Smith

它只会返回

John Smith

?
如果是这样的话,那么你想要

SELECT DISTINCT a.NAME FROM [NAME] a WHERE a.NAME = "JOHN SMITH"

如果这不是您想要做的,那么也许您可以更新您的问题以更好地解释您的问题?

【讨论】:

    【解决方案3】:

    您是否想在 C# 或 SQL 中执行此操作还不是很清楚。于尔根的回答很好。

    如果您正在使用,或者在某些时候决定在 C# 中使用 LINQ,则在获取一行时有一个 FirstOrDefault() 选项,如下所示:

    return db.NameTable.Where(q => q.name == "John Smith").FirstOrDefault();
    

    【讨论】:

      【解决方案4】:

      在您的 sql 语句中使用 Group By [引用已删除'因业力不好]或不同 [已删除引用'因业力不良]

      【讨论】:

      • 免责声明:我没有对你投反对票,但我们通常认为 w3schools 是a bad resource。此外,更好的答案包括代码示例以及指向外部资源的链接。
      • jajaja 好的。我知道很多人因为w3cschool不隶属于w3c而产生冲突;没问题...很高兴知道...
      猜你喜欢
      • 1970-01-01
      • 2018-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-18
      • 2023-03-22
      相关资源
      最近更新 更多