繁体   English   中英

如何使用2个值在2个表之间建立联接?

[英]How to make join between 2 tables using 2 values?

在Mariadb数据库中,我想进行查询以连接两个表: jokejokevote以获取由某个用户支持的所有笑话。

表格如下:

玩笑

+-------------+------------------+------+-----+-------------------+----------------+
| Field       | Type             | Null | Key | Default           | Extra          |
+-------------+------------------+------+-----+-------------------+----------------+
| id          | int(6) unsigned  | NO   | PRI | NULL              | auto_increment |
| title       | varchar(255)     | NO   |     | None              |                |
| content     | mediumtext       | NO   |     | NULL              |                |
| user_id     | int(10) unsigned | YES  |     | 0                 |                |
| username    | varchar(32)      | NO   |     | Unknown           |                |
...

笑话

+---------+------------+------+-----+---------+----------------+
| Field   | Type       | Null | Key | Default | Extra          |
+---------+------------+------+-----+---------+----------------+
| id      | int(11)    | NO   | PRI | NULL    | auto_increment |
| joke_id | int(11)    | NO   |     | NULL    |                |
| user_id | int(11)    | NO   |     | NULL    |                |
| vote    | tinyint(4) | NO   |     | NULL    |                |
+---------+------------+------+-----+---------+----------------+

jokevote的内容是: 在此处输入图片说明

joke表中的一些值(与用户6相关): 在此处输入图片说明

我尝试过的查询之一是:

    SELECT * FROM joke LEFT JOIN jokevote 
     ON joke.user_id=6  AND joke.id=jokevote.joke_id 
     AND jokevote.vote=1;

该查询应仅返回2个笑话,但它返回所有笑话。 我也尝试过其他类似的查询:

SELECT * FROM joke LEFT JOIN jokevote 
ON joke.user_id=6  AND joke.id=jokevote.joke_id AND 
jokevote.vote=1 AND joke.user_id=jokevote.user_id AND ;

(再次返回所有笑话)

因此,我一无所知,想知道在这种情况下正确的查询是什么?

我想你是想做一个INNER JOIN而不是说

SELECT * FROM joke INNER JOIN jokevote 
 ON joke.id=jokevote.joke_id 
 WHERE jokevote.vote=1
 AND joke.user_id=6;

暂无
暂无

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

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