【问题标题】:selecting the same data in different row from database从数据库中选择不同行中的相同数据
【发布时间】:2016-09-17 09:02:29
【问题描述】:

我需要选择 'name' 属性必须与 'seek' 属性值相同。 有点像一个配对概念,我需要在同一张表中选择“名称”属性=“搜索”属性 所以结果会是

name      | seek
HEADPHONE | KETTLE
KETTLE    | HEADPHONE

任何人都可以给我解决方法。我目前正在做我最后一年的项目。谢谢你

【问题讨论】:

标签: sql database


【解决方案1】:

你需要执行SELF JOIN

SELECT a.NAME, 
       a.seek 
FROM   yourtable a 
       JOIN yourtable b 
         ON a.NAME = b.seek 
            AND b.NAME = a.seek 

另一种方法是使用EXISTS

SELECT a.NAME, 
       a.seek
FROM   yourtable a 
WHERE  EXISTS (SELECT 1 
               FROM   yourtable b 
               WHERE  a.NAME = b.seek 
                      AND b.NAME = a.seek) 

【讨论】:

    【解决方案2】:
    SELECT t1.NAME,
           t1.SEEK
    FROM yourTable t1
    INNER JOIN yourTable t2
        ON t1.NAME = t2.SEEK AND
           t1.SEEK = t2.NAME
    

    如果您只想为每个SEEK/NAME对报告一条记录,那么您可以尝试:

    SELECT DISTINCT LEAST(t1.NAME, t1.SEEK),
                    GREATEST(t1.NAME, t1.SEEK)
    FROM yourTable t1
    INNER JOIN yourTable t2
        ON t1.NAME = t2.SEEK AND
           t1.SEEK = t2.NAME
    

    【讨论】:

    • 为什么我得到错误组函数在这里是不允许的。每个搜索/名称只需要一条记录
    • @FYP 我更新了我的答案,只给你一条记录。
    • 随意看看我的新问题,它非常相似,但已经做了一些改变
    • @FYP 不,不要这样做,而是打开一个新问题。
    • 我已经打开了一个新问题link
    猜你喜欢
    • 1970-01-01
    • 2012-09-24
    • 2022-01-16
    • 2015-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多