在mysql中读取复合键

Moh*_*mad 2 mysql

我正在尝试在我正在使用的框架中生成一个动态属性,但我遇到了一些困难..我有两个表加入了多对多关系(平台、标题和游戏)游戏有两个主键, titleid 和 platformid

select * from games where CONCAT(platformid,titleid) = 110
Run Code Online (Sandbox Code Playgroud)

110只是一个例子,但是记录确实存在,平台为1,titleid为10...

为什么不行?

PS:我知道我可以用 where 子句(platformid = 1 AND title = 10)重写查询,但就我的框架而言,这不是一个选项......

编辑:修正了流派错误(应该是titleid,但在我的实际代码中这是正确的......)

编辑 2:这是一个场景:

select * where="platforms.id=#game.platformId# AND genres.id=#game.genreId# AND games.id<>#game.id#"
Run Code Online (Sandbox Code Playgroud)

这是我想查找当前选定记录以外的记录时的一种情况...

Qua*_*noi 7

首先,一张表不能有两个PRIMARY KEYs。您可能指的是复合键。

其次,您的查询可以工作,但也会匹配(platformid, genreid) = (11, 0).

您可以使用元组比较语法(当然,如果您的框架允许您这样做):

SELECT  *
FROM    games
WHERE   (platformid, genreid) = (1, 10)
Run Code Online (Sandbox Code Playgroud)

或者进行更复杂的串联:

SELECT  *
FROM    games
WHERE   CONCAT_WS(',', platformid, genreid) = '1,10'
Run Code Online (Sandbox Code Playgroud)