【问题标题】:SQL Server can you use EXCEPT or INTERSECT and ignore a column?SQL Server 可以使用 EXCEPT 或 INTERSECT 并忽略一列吗?
【发布时间】:2013-04-29 23:54:44
【问题描述】:

这是我的问题,

CREATE TABLE
    #table1(ID int, Fruit varchar(50), Veg varchar(50))
INSERT INTO #table1 (ID,Fruit,Veg)
VALUES (1,'Apple', 'Potato')

CREATE TABLE
    #table2(ID int, Fruit varchar(50), Veg varchar(50))
INSERT INTO #table2 (ID,Fruit,Veg)
VALUES (2,'Apple', 'Potato')

SELECT * FROM #table1 INTERSECT SELECT * FROM #table2

我有两个表,我想找到两个表中相同的行,但两个表都有不同且不相关的 ID 列。有没有办法在两个表上使用 INTERSECT 或 EXCEPT,但忽略比较中的 ID?

我需要在返回的行上保留 ID,所以在上面的示例中,将返回两行,一个 ID = 1,另一个 ID = 2

如果 ID 以外的任何内容不同,则不会返回任何内容。

谢谢!

【问题讨论】:

  • 如果表包含不同且不相关的 ID 列,为什么要使用 SELECT *?如果你只列出 Fruit,Veg 它应该可以正常工作,对吧?否则,您需要确定当水果/蔬菜对出现在两个表中时应该显示哪个 ID...
  • 或者他可以同时显示,对吗?
  • @Abe 与相交?怎么样?
  • 不抱歉,我想我正在考虑使用 JOIN 来做这件事。
  • @Abe 对,您可以通过其他方式做到这一点,但不能使用 INTERSECT。

标签: database sql-server-2008 intersect


【解决方案1】:

我认为INTERSECT 无法做到这一点。也许用 join 代替?

SELECT t1.id, t2.id, t1.veg, t1.fruit
FROM Table1 as t1
INNER JOIN Table2 as t2
ON t1.veg = t2.veg AND t1.fruit = t2.fruit

【讨论】:

    猜你喜欢
    • 2014-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 2022-11-30
    • 1970-01-01
    • 2017-07-30
    相关资源
    最近更新 更多