【问题标题】:find the people who are friends with all of my friends找到我所有朋友的朋友
【发布时间】:2021-12-31 23:09:42
【问题描述】:

桌子是

CREATE TABLE ESTAMI(
    IDUTILISATEUR NUMBER NOT NULL,
    IDAUTREUTILISATEUR NUMBER NOT NULL,
    DATELIAISON DATE NOT NULL,
    CONSTRAINTS FK_AMI_UTI FOREIGN KEY (IDUTILISATEUR) REFERENCES UTILISATEUR,
    CONSTRAINTS FK_AMI_AUTRE_UTI FOREIGN KEY (IDAUTREUTILISATEUR) REFERENCES UTILISATEUR(IDUTILISATEUR)
);

idutilisateur 是 user_id,idautreutilisateur 是friend_id

【问题讨论】:

  • 样本数据和预期结果会有很大帮助。

标签: sql oracle


【解决方案1】:

您可以使用分层查询,类似于:

WITH cteTree
  AS (SELECT IDUTILISATEUR, IDAUTREUTILISATEUR, LEVEL AS LVL
        FROM ESTAMI
        CONNECT BY IDUTILISATEUR = PRIOR IDAUTREUTILISATEUR
        START WITH IDUTILISATEUR IN (SELECT DISTINCT IDUTILISATEUR
                                       FROM ESTAMI))
SELECT DISTINCT IDAUTREUTILISATEUR
  FROM cteTree
  WHERE LVL = 2 AND
        IDAUTREUTILISATEUR IS NOT NULL
  ORDER BY 1

db<>fiddle here

【讨论】:

  • 我收到此错误:ORA-01436: CONNECT BY 循环在用户数据中
  • 那么请改用CONNECT BY NOCYCLE
猜你喜欢
  • 2015-10-21
  • 1970-01-01
  • 1970-01-01
  • 2011-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-15
相关资源
最近更新 更多