我正在尝试在我正在使用的框架中生成动态属性,而且我遇到了一些困难。我有两个表加入多对多关系(平台,游戏和游戏)游戏两个主键,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#"
这是我想要查找当前所选记录以外的记录的情况......
答案 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'