【问题标题】:How would I perform this MySQL Query?我将如何执行这个 MySQL 查询?
【发布时间】:2023-03-14 04:41:01
【问题描述】:

假设我有一个名为“approvals”的表。

mysql> desc approval;
+-------------+------------+------+-----+---------+----------------+
| Field       | Type       | Null | Key | Default | Extra          |
+-------------+------------+------+-----+---------+----------------+
| id          | int(11)    | NO   | PRI | NULL    | auto_increment |
| user_id     | int(11)    | NO   |     | NULL    |                |
| to_user_id  | int(11)    | NO   |     | NULL    |                |
+-------------+------------+------+-----+---------+----------------+

假设 Jessica 批准了 Matt。杰西卡是user_id,马特是to_user_id

如何运行此查询?

SELECT * WHERE to_user_id = matt AND matt also approved that person ?

(换句话说,如果 Jessica 批准了 Matt,但 Matt 不批准 Jessica,那么查询将不会显示。)

【问题讨论】:

标签: mysql sql database


【解决方案1】:

试试(根据cmets修正)

SELECT * 
FROM approvals A 
INNER JOIN approvals B 
ON A.user_id = B.to_user_id AND B.user_id = A.to_user_id 
WHERE A.to_user_id = matt

【讨论】:

  • 如果杰西卡批准马特但马特不批准杰西卡,这将返回一个结果
【解决方案2】:

如果我理解正确的话,

select * from approvals a1 join approvals a2 where a1.user_id=a2.to_user_id and a2.user_id=a1.to_user_id

我认为。

【讨论】:

    【解决方案3】:

    出于演示目的,我修改了您的表以使用 varchars 作为用户 ID,但 int 将以相同的方式工作。

    因为这个要求

    如果 Jessica 批准了 Matt,但 Matt 不批准 Jessica,则查询不会显示

    您需要对 ID 进行两次自我加入,而不是一次。其他明智的 Eeyore 会出现在您的结果中。

    CREATE approvals table (id int, user_id varchar(10), to_user_id varchar(10))
    INSERT INTO 
    approvals
    VALUES ( 1 , 'Matt' , 'Jessica' ),
    ( 2 , 'Jessica' , 'Matt' ),
    ( 3 , 'Eeyore' , 'Jessica' ),
    ( 4 , 'Eeyore' , 'Matt' )
    
    SELECT * 
    FROM   approvals a 
           INNER JOIN approvals b 
             ON a.user_id = b.to_user_id 
                AND b.user_id = a.to_user_id 
    WHERE  a.to_user_id = 'Matt' 
    

    您可以在Data.SE query 看到这一点

    【讨论】:

      猜你喜欢
      • 2011-04-06
      • 1970-01-01
      • 1970-01-01
      • 2022-12-16
      • 2020-10-11
      • 1970-01-01
      • 1970-01-01
      • 2016-02-02
      • 2013-06-21
      相关资源
      最近更新 更多