Mat*_*att 6 php mysql sql relational-division
我有两张桌子:
游戏
`id` INT(11)
Run Code Online (Sandbox Code Playgroud)
game_tags
`game` INT(11)
`tag_id` INT(11)
Run Code Online (Sandbox Code Playgroud)
game_tags.game = game.id
我对MySQL很恐怖,所以这是我的问题:我希望能够找到games具有一定数量的MySQL tag_id.所以,如果我有四个tag_id(3,5,7,11),我希望能够通过查看game_tags表格找到哪些游戏将拥有所有这四个标签.这是我的意思的一个例子:
伪MySQL的:
SELECT *
FROM `games`
WHERE (search through game_tags table and find which rows have the same `game` field and all of the tag_id's that I need to search for)
LIMIT 0, 15
Run Code Online (Sandbox Code Playgroud)
我知道我解释了这个可怕的(不能在我的脑海里说出来),所以如果你有任何问题,请发表评论.
您可以将group byandhaving子句与 Bassam 的查询一起使用,以确保您找到给定游戏的所有四个 id。
select
game.*
from game
join game_tags on game.id = game_tags.game
where
tag_id in (3, 5, 7, 11)
group by
game.id
having
count(distinct tag_id) = 4;
Run Code Online (Sandbox Code Playgroud)
请注意,这是有效的,因为having子句在聚合count(distinct ...)运行之后运行,而where子句没有此信息。
| 归档时间: |
|
| 查看次数: |
169 次 |
| 最近记录: |