如何书写SQL语句来判断同一个字段两条记录的值是否相同

时间:2021-05-04 14:48:52
如何书写SQL语句来判断同一个字段两条记录的值是否相同?
也就是说:
ID Name Age
1  Bill 23
2  Bill 18

要查出这两条记录

12 个解决方案

#1


select * from tablename as A where 
 (select count(*) from tablename where name = A.name) > 1

#2


select * from yourtable
group by name
having count(*) > 1

#3


select name,count(*) as 重复数量 from yourtable
group by name
having count(*) > 1

#4


select name from tablename group by name,id having count(*)>=2

#5


不好意思,忘了把那个ID给删了。

#6


select * from yourtable as A where
 (select count(*) from youtable where name = A.name) > 1

#7


高手太我多了,我就不发言了,比较喜欢 CrazyFor(蚂蚁)  的语句,

#8


select * from yourtable
group by name

加HAVING是什么意思;/

#9


HAVING等于是对group by 的语句的where条件,having count(*) > 1,指group by name的每个分组中至少有2条记录。

#10


指定组或聚合的搜索条件。HAVING 只能与 SELECT 语句一起使用。通常在 GROUP BY 子句中使用它。如果不使用 GROUP BY 子句,HAVING 的行为与 WHERE 子句一样。有关更多信息,请参见

#11


用 WHERE 和 HAVING 筛选行
SELECT 语句中的 WHERE 和 HAVING 子句控制用源表中的那些行来构造结果集。WHERE 和 HAVING 是筛选。这两个子句指定指定一系列搜索条件,只有那些满足搜索条件的行才用来构造结果集。我们称满足搜索条件的行符合参与行集的限定条件。例如,下列 SELECT 语句中的 WHERE 子句将限定只选择地区为华盛顿州 (WA) 的行:

SELECT CustomerID, CompanyName
FROM Northwind.dbo.Customers
WHERE Region = 'WA'

HAVING 子句通常与 GROUP BY 子句结合使用,尽管指定该子句时也可以不带 GROUP BY。HAVING 子句指定在应用 WHERE 子句的筛选后要进一步应用的筛选。例如,下列 WHERE 子句仅限定以高于 $100 的单价销售产品的订单,而 HAVING 子句进一步将结果限制为只包括 100 件以上的订单:

SELECT OrdD1.OrderID AS OrderID,
       SUM(OrdD1.Quantity) AS "Units Sold",
       SUM(OrdD1.UnitPrice * OrdD1.Quantity) AS Revenue
FROM [Order Details] AS OrdD1
WHERE OrdD1.OrderID in (SELECT DISTINCT OrdD2.OrderID
                        FROM [Order Details] AS OrdD2
                        WHERE OrdD2.UnitPrice > $100)
GROUP BY OrdD1.OrderID
HAVING SUM(OrdD1.Quantity) > 100

WHERE 和 HAVING 子句中的搜索条件或限定条件可包括: 

比较运算符(如 =、< >、< 和 >)。例如,下列查询从 Products 表中检索产品分类为 2 的行: 
SELECT ProductID, ProductName
FROM Northwind.dbo.Products
WHERE CategoryID = 2
ORDER BY ProductID

范围(BETWEEN 和 NOT BETWEEN)。例如,下列查询从 Products 表中检索产品分类从 2 到 4 的行: 
SELECT CategoryID, ProductID, ProductName
FROM Northwind.dbo.Products
WHERE CategoryID BETWEEN 2 and 4
ORDER BY CategoryID, ProductID

列表(IN、NOT IN)。例如,下列查询从 Products 表中检索产品分类 ID 与列表中某一 ID 匹配的行: 
SELECT CategoryID, ProductID, ProductName
FROM Northwind.dbo.Products
WHERE CategoryID IN (1,4,5,7)
ORDER BY CategoryID, ProductID

模式匹配(LIKE 和 NOT LIKE)。例如,下列查询从 Products 表中检索产品名称以 Ch 开头的行: 
SELECT CategoryID, ProductID, ProductName
FROM Northwind.dbo.Products
WHERE ProductName LIKE 'Ch%'
ORDER BY CategoryID, ProductID



说明  可用于 text 列的 WHERE 条件只有返回其它数据类型的函数(如 PATINDEX())或运算符(如 IS NULL、IS NOT NULL、LIKE 和 NOT LIKE)。

空值(IS NULL 和 IS NOT NULL)。例如,下列查询从 Customers 表中检索客户地区不为 NULL 的行: 
SELECT CompanyName, City, Region, Country
FROM Northwind.dbo.Customers
WHERE Region IS NOT NULL
ORDER BY CompanyName



说明  比较空值时请谨慎从事。例如,指定 = NULL 与指定 IS NULL 是不同的。有关更多信息,请参见空值。

所有记录(=ALL、>ALL、<= ALL、ANY)。例如,下列查询从 Order Details 表中检索装运产品数量大于分类 1 中任意产品的装运数量的订单和产品 ID: 
USE Northwind
GO
SELECT OrdD1.OrderID, OrdD1.ProductID
FROM "Order Details" OrdD1
WHERE OrdD1.Quantity > ALL
      (SELECT OrdD2.Quantity
       FROM "Order Details" OrdD2 JOIN Products Prd
             ON OrdD2.ProductID = Prd.ProductID
       WHERE Prd.CategoryID = 1)
GO

上述条件的组合(AND、OR、NOT)。例如,下列查询检索库存水平低于再订购点,或来自供应商 15 并属于分类 4 的所有产品: 
SELECT ProductID, ProductName
FROM Northwind.dbo.Products
WHERE UnitsInStock < ReorderLevel
   OR (SupplierID = 15 AND CategoryID = 4)



说明  当在 WHERE 子句中搜索 Unicode 字符串时,请在搜索字符串之前加字符 N,例如:

SELECT CompanyName, ContactName, Phone, Fax
FROM Northwind.dbo.Customers
WHERE CompanyName = N'Berglunds snabbk&ouml;p'

#12


select * from yourtable
group by name
having count(*) > 1
有误,应该为

select * from yourtable a,
( select name yourtable
  group by name
  having count(*) > 1 ) b
where a.name = b.name 

#1


select * from tablename as A where 
 (select count(*) from tablename where name = A.name) > 1

#2


select * from yourtable
group by name
having count(*) > 1

#3


select name,count(*) as 重复数量 from yourtable
group by name
having count(*) > 1

#4


select name from tablename group by name,id having count(*)>=2

#5


不好意思,忘了把那个ID给删了。

#6


select * from yourtable as A where
 (select count(*) from youtable where name = A.name) > 1

#7


高手太我多了,我就不发言了,比较喜欢 CrazyFor(蚂蚁)  的语句,

#8


select * from yourtable
group by name

加HAVING是什么意思;/

#9


HAVING等于是对group by 的语句的where条件,having count(*) > 1,指group by name的每个分组中至少有2条记录。

#10


指定组或聚合的搜索条件。HAVING 只能与 SELECT 语句一起使用。通常在 GROUP BY 子句中使用它。如果不使用 GROUP BY 子句,HAVING 的行为与 WHERE 子句一样。有关更多信息,请参见

#11


用 WHERE 和 HAVING 筛选行
SELECT 语句中的 WHERE 和 HAVING 子句控制用源表中的那些行来构造结果集。WHERE 和 HAVING 是筛选。这两个子句指定指定一系列搜索条件,只有那些满足搜索条件的行才用来构造结果集。我们称满足搜索条件的行符合参与行集的限定条件。例如,下列 SELECT 语句中的 WHERE 子句将限定只选择地区为华盛顿州 (WA) 的行:

SELECT CustomerID, CompanyName
FROM Northwind.dbo.Customers
WHERE Region = 'WA'

HAVING 子句通常与 GROUP BY 子句结合使用,尽管指定该子句时也可以不带 GROUP BY。HAVING 子句指定在应用 WHERE 子句的筛选后要进一步应用的筛选。例如,下列 WHERE 子句仅限定以高于 $100 的单价销售产品的订单,而 HAVING 子句进一步将结果限制为只包括 100 件以上的订单:

SELECT OrdD1.OrderID AS OrderID,
       SUM(OrdD1.Quantity) AS "Units Sold",
       SUM(OrdD1.UnitPrice * OrdD1.Quantity) AS Revenue
FROM [Order Details] AS OrdD1
WHERE OrdD1.OrderID in (SELECT DISTINCT OrdD2.OrderID
                        FROM [Order Details] AS OrdD2
                        WHERE OrdD2.UnitPrice > $100)
GROUP BY OrdD1.OrderID
HAVING SUM(OrdD1.Quantity) > 100

WHERE 和 HAVING 子句中的搜索条件或限定条件可包括: 

比较运算符(如 =、< >、< 和 >)。例如,下列查询从 Products 表中检索产品分类为 2 的行: 
SELECT ProductID, ProductName
FROM Northwind.dbo.Products
WHERE CategoryID = 2
ORDER BY ProductID

范围(BETWEEN 和 NOT BETWEEN)。例如,下列查询从 Products 表中检索产品分类从 2 到 4 的行: 
SELECT CategoryID, ProductID, ProductName
FROM Northwind.dbo.Products
WHERE CategoryID BETWEEN 2 and 4
ORDER BY CategoryID, ProductID

列表(IN、NOT IN)。例如,下列查询从 Products 表中检索产品分类 ID 与列表中某一 ID 匹配的行: 
SELECT CategoryID, ProductID, ProductName
FROM Northwind.dbo.Products
WHERE CategoryID IN (1,4,5,7)
ORDER BY CategoryID, ProductID

模式匹配(LIKE 和 NOT LIKE)。例如,下列查询从 Products 表中检索产品名称以 Ch 开头的行: 
SELECT CategoryID, ProductID, ProductName
FROM Northwind.dbo.Products
WHERE ProductName LIKE 'Ch%'
ORDER BY CategoryID, ProductID



说明  可用于 text 列的 WHERE 条件只有返回其它数据类型的函数(如 PATINDEX())或运算符(如 IS NULL、IS NOT NULL、LIKE 和 NOT LIKE)。

空值(IS NULL 和 IS NOT NULL)。例如,下列查询从 Customers 表中检索客户地区不为 NULL 的行: 
SELECT CompanyName, City, Region, Country
FROM Northwind.dbo.Customers
WHERE Region IS NOT NULL
ORDER BY CompanyName



说明  比较空值时请谨慎从事。例如,指定 = NULL 与指定 IS NULL 是不同的。有关更多信息,请参见空值。

所有记录(=ALL、>ALL、<= ALL、ANY)。例如,下列查询从 Order Details 表中检索装运产品数量大于分类 1 中任意产品的装运数量的订单和产品 ID: 
USE Northwind
GO
SELECT OrdD1.OrderID, OrdD1.ProductID
FROM "Order Details" OrdD1
WHERE OrdD1.Quantity > ALL
      (SELECT OrdD2.Quantity
       FROM "Order Details" OrdD2 JOIN Products Prd
             ON OrdD2.ProductID = Prd.ProductID
       WHERE Prd.CategoryID = 1)
GO

上述条件的组合(AND、OR、NOT)。例如,下列查询检索库存水平低于再订购点,或来自供应商 15 并属于分类 4 的所有产品: 
SELECT ProductID, ProductName
FROM Northwind.dbo.Products
WHERE UnitsInStock < ReorderLevel
   OR (SupplierID = 15 AND CategoryID = 4)



说明  当在 WHERE 子句中搜索 Unicode 字符串时,请在搜索字符串之前加字符 N,例如:

SELECT CompanyName, ContactName, Phone, Fax
FROM Northwind.dbo.Customers
WHERE CompanyName = N'Berglunds snabbk&ouml;p'

#12


select * from yourtable
group by name
having count(*) > 1
有误,应该为

select * from yourtable a,
( select name yourtable
  group by name
  having count(*) > 1 ) b
where a.name = b.name