简体   繁体   English

mysql内部联接,需要另一种联接类型

[英]mysql inner join with another type of join required

[TABLE1]

 +----------+-------------------+-------------+
 | USERNAME | POST              | FRUIT       |
 +----------+-------------------+-------------+
 | Bob      | 'Hi There'        | APPLE       |
 | Jack     | 'Hello'           | ORANGE      |
 | Bob      | 'Today is Monday' | APPLE       |    
 | Tony     | 'That is ok'      | PEAR        |
 +----------+-------------------+-------------+

 [TABLE2]

 +----------+-----------+
 | USERNAME | FOLLOWING |
 +----------+-----------+
 | Mike     | Jack      |
 | Jack     | Bob       |
 | Bob      | Jack      |
 | Jack     | Mike      |
 +----------+-----------+

 [TABLE3]

 +----------+----------- +
 | USERNAME | LIKESFRUIT |
 +----------+----------- +
 | Mike     | APPLE      |
 | Jack     | ORANGE     |
 | Bob      | BERRY      |
 | Jack     | PEAR       |
 +----------+------------+

I am using the below query. 我正在使用以下查询。 It shows all records from TABLE1 if jack is following the user in TABLE2 or jack in the username in TABLE 1. 如果jack在TABLE2中跟随用户或在table 1的用户名中跟随jack,它将显示来自TABLE1的所有记录。

 SELECT t1.* 
 FROM TABLE1 t1 
 INNER JOIN table2 t2 
 ON t1.username = t2.following 
 AND (t2.username = 'jack' OR t1.username = 'jack');

Now i want to do that AND to show records from TABLE1 if jack LIKESFRUIT in TABLE3. 现在,我想执行该操作并显示来自TABLE1的记录(如果TABLE3中的jack LIKESFRUIT)。

 SELECT t1.* 
 FROM TABLE1 t1 
 INNER JOIN table2 t2 
 ON t1.username = t2.following 
left join tablet3 t3 on t3.username = t1.username
 AND (t2.username = 'jack' OR t1.username = 'jack')
AND (t3.username = 'jack' and t3.LIKESFRUIT <> '' and t3.LIKESFRUIT is not null)
;

Although I am not sure what do you mean by "show records from TABLE1" 尽管我不确定“显示TABLE1中的记录”是什么意思

try this 尝试这个

SELECT t1.* 
 FROM TABLE1 t1 
 INNER JOIN table2 t2 
 ON t1.username = t2.following 
 AND (t2.username = 'jack' OR t1.username = 'jack')
 and exists(select * from TABLE3 t3 where t3.username=t1.username)
SELECT
    username, post, fruit
FROM
    TABLE1 t1
INNER JOIN
    TABLE2 t2
ON
    t1.username = t2.username
AND t1.username = t2.follwing
INNER JOIN
    TABLE3 t3
ON
    t3.LIKESFRUIT = t1.fruit
WHERE
    t1.username = 'jack';

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

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