【问题标题】:SQL check unique keySQL 检查唯一键
【发布时间】:2023-02-03 19:19:41
【问题描述】:

我希望你过得很好

我无法检查我的密钥在我的表中是否唯一

例子

ID     NAME     DATE
1       H       12/12/2022
1       B       11/10/2012

我想检查 ID 是否可以与 Name 和 Date 中的其他值重复,如果所有三个都重复则没关系,但我想验证我是否可以找到相同的 ID 但具有另一个值。

谢谢

我试过这个:

SELECT ID, NAME , DATE , COUNT(ID) 
FROM TABLE t 
GROUP BY ID, NAME,  DATE
HAVING COUNT(ID) > 1 

【问题讨论】:

  • 您是要查找有效 ID(及其行?),还是要查找无效 ID(以及它们的行)?

标签: sql


【解决方案1】:

试试这个(对于无效的重复 ID)

SELECT 
    a.ID, COUNT(1) cnt 
FROM TABLE a
INNER JOIN (
    SELECT DISTINCT ID, NAME, DATE FROM TABLE
) b ON a.ID = b.ID AND a.NAME != b.NAME AND a.DATE != b.DATE
GROUP BY ID
HAVING COUNT(1) > 1 

【讨论】:

  • 此查询不会区分有效和无效的重复行。
  • 修改后的查询,请检查。
  • 它返回什么,有效 id 有有效或无效的重复项?
  • 无效的重复 ID
【解决方案2】:

如果你的数据库/表有任何意义,它就具有主键的特性。它们必须是唯一的并且不能为空。因此,有一个用于识别条目的字段——这就是它被称为 ID 的原因——请在你的表中使用主键,让数据库完成它的工作。 https://www.w3schools.com/sql/sql_primarykey.ASP

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多