简体   繁体   English

在MySQL中使用内部连接而不是一起使用

[英]Using inner join and not in together in mysql

I have a wordpress database with default users table and two custom tables as below 我有一个带有默认用户表和两个自定义表的wordpress数据库,如下所示

1. wp_users

| id | display_name |
|----|--------------|
|  1 |         Ibbs |
|  2 |         Nina |
|  3 |        rakib |


2. wp_invite

| post_id | user_id |   status |
|---------|---------|----------|
|    3342 |       1 | accepted |
|    3342 |       2 | accepted |
|    3342 |       3 | accepted |



3. wp_rating
| id | reviwer | reviewed | post | know | skill | time | comm |
|----|---------|----------|------|------|-------|------|------|
|  2 |       3 |        1 | 3342 |    b |     b |    b |    b |
|  5 |       1 |        2 | 2122 |    a |     c |    d |    a |
|  7 |       2 |        3 | 3342 |    d |     a |    b |    c |

i want to select * from wp_invite where status = accepted , display_name from wp_users and then want to exclude rows from the result where all of these three conditions meet 1. wp_invite.user_id is not equal to wp_rating.reviewer and 2. wp_invite.user_id is not equal to wp_rating.reviewed and 3. wp_invite.post_id is not equal to wp_rating.post . 我想select * from wp_invite where status = accepteddisplay_namewp_users然后要排除从结果,其中所有这三个条件满足1行wp_invite.user_id不等于wp_rating.reviewer和2 wp_invite.user_id是不等于wp_rating.reviewedwp_invite.post_id不等于wp_rating.post

My desired output for post = 3342 and reviewer = 3 我想要的post = 3342输出post = 3342reviewer = 3

| user_id | display_name |
|---------|--------------|
|       2 |         Nina |
|       3 |        rakib |

My desired output for post = 3342 and reviewer = 2 我想要的post = 3342输出post = 3342reviewer = 2

| user_id | display_name |
|---------|--------------|
|  1      |         Ibbs |
|  2      |         Nina |

My desired output for post = 2122 and reviewer = 2 我想要的post = 2122输出post = 2122reviewer = 2

| id | display_name |
|----|--------------|
|  1 |         Ibbs |
|  2 |         Nina |
|  3 |        rakib |

My desired output for post = 2122 and reviewer = 1 我想要的post = 2122输出post = 2122reviewer = 1

| id | display_name |
|----|--------------|
|  1 |         Ibbs |
|  3 |        rakib |

I have tried the following query but my output is empty: 我尝试了以下查询,但我的输出为空:

SELECT wp_invite.user_id, wp_users.display_name, wp_invite.post_id 
FROM wp_invite 
INNER JOIN wp_users ON wp_invite.user_id = wp_users.id 
WHERE (status = 'accepted') 
AND user_id NOT IN (SELECT reviewer FROM wp_rating) 
AND user_id NOT IN (SELECT reviewed FROM wp_rating)
AND post_id NOT IN (SELECT post FROM wp_rating)

ID should be capitalized: inner join wp_users on wp_invite.user_id = wp_users. ID应该大写:wp_invite.user_id上的内部联接wp_users = wp_users。 ID ID

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM