Mysql 合并来自2个不同选择请求的结果(逻辑和)
我在一个数据库中有两个表:Mysql 合并来自2个不同选择请求的结果(逻辑和),mysql,Mysql,我在一个数据库中有两个表: $ SELECT * from image +----------+------+-----+ | image_id | good | bad | +----------+------+-----+ | 1 | 2 | 0 | | 2 | 1 | 0 | | 3 | 0 | 0 | | 4 | 1 | 0 | $ SELECT * from image_tag_map +
$ SELECT * from image
+----------+------+-----+
| image_id | good | bad |
+----------+------+-----+
| 1 | 2 | 0 |
| 2 | 1 | 0 |
| 3 | 0 | 0 |
| 4 | 1 | 0 |
$ SELECT * from image_tag_map
+----------+--------+-------+
| image_id | tag_id | score |
+----------+--------+-------+
| 1 | 1 | 255 |
| 2 | 1 | 255 |
| 3 | 1 | 255 |
| 4 | 2 | 255 |
SELECT * FROM image_tag_map WHERE tag_id=$tagID and score>=5;
result : 1, 2, 3 (image_id)
SELECT * FROM image WHERE good!=0 ORDER BY good DESC;
result : 1, 2, 4 (image_id)
我想要1,2作为结果。所以这两个命令的混合
图像标识在两个位置的位置。
我试过使用内部连接之类的方法,但找不到有效的方法…除了使用连接,您还可以使用EXISTS
连接两个表:
SELECT *
FROM image AS i
INNER JOIN image_tag_map AS m ON i.image_id = m.image_id
WHERE m.tag_id=$tagID and m.score>=5
AND i.good != 0
ORDER BY i.good DESC;
加入应该有效
SELECT * FROM image_tag_map itm
JOIN image i ON i.image_id = itm.image_id
WHERE itm.tag_id=$tagID
AND itm.score>=5
AND i.good!=0
GROUP BY i.image_id
你试过这个吗
SELECT distinct itm.image_id
FROM image_tag_map itm join
image i
on itm.image_id = i.image_id
WHERE item.tag_id=$tagID and item.score>=5 and i.good <> 0;
试一试
你只需要身份证吗?有几种方法
SELECT image_id FROM image
WHERE good <> 0
AND image_id IN (
SELECT image_id FROM image_tag_map
WHERE tag_id = ? AND score >= 5
)
SELECT image_id FROM image
WHERE good <> 0
AND EXISTS (
SELECT image_id FROM image_tag_map
WHERE image_tag_map.image_id = image.image_id
AND tag_id = ? AND score >= 5
)
使用内部联接也应起作用:
SELECT image_id FROM image i
INNER JOIN image_tag_map itm
ON i.image_id = itm.image_id
WHERE i.good <> 0
AND itm.score >= 5
AND itm.tag_id = ?
怎么样
select image_id from image where good <> 0 and image_id in
(select image_id from FROM image_tag_map WHERE tag_id= ? and score>=5)
order by good desc
SELECT image_id FROM image i
INNER JOIN image_tag_map itm
ON i.image_id = itm.image_id
WHERE i.good <> 0
AND itm.score >= 5
AND itm.tag_id = ?
select image_id from image where good <> 0 and image_id in
(select image_id from FROM image_tag_map WHERE tag_id= ? and score>=5)
order by good desc