在mysql中读取复合键

时间:2010-09-08 18:26:55

标签: mysql

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

select * from games where CONCAT(platformid,titleid) = 110

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

为什么不工作?

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

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

编辑2:这是一个场景:

select * where="platforms.id=#game.platformId# AND genres.id=#game.genreId# AND games.id<>#game.id#"

这是我想要查找当前所选记录以外的记录的情况......

1 个答案:

答案 0 :(得分:4)

首先,一个表不能有两个PRIMARY KEY。你可能意味着一个复合键。

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

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

SELECT  *
FROM    games
WHERE   (platformid, genreid) = (1, 10)

或进行更复杂的连接:

SELECT  *
FROM    games
WHERE   CONCAT_WS(',', platformid, genreid) = '1,10'