帮助MySQL查询语法

时间:2010-09-16 23:41:59

标签: sql mysql

我想在一个包含五列的表中插入一行数据(此表连接成员和游戏);五列中有四列是已知的,而第四列则必须动态计算:

wishlists(id (int, pk), memberid (int, FK), gameid(int, FK), rank (int), createdat(timestamp) )

INSERT INTO wishlists (memberid, gameid, rank)
VALUES (somememberid, somegameid, )

值排名需要搜索表并查找属于某个成员的所有记录,计算出排名,并插入排名最低的新记录。

rank = MAX(ISNULL(Rank,0))+1

我尝试了一些变体,但我无法正确使用语法。我知道如何在两个查询中执行此操作,但我无法弄清楚如何在一个查询中执行此操作。

编辑以下代码,我之前使用的代码,产生[Err] 1582 - Incorrect parameter count in the call to native function 'ISNULL'

insert into wishlists (memberid, gameid, rank)
select 
memberid, 
gameid, 
MAX(ISNULL(Rank,0))+1
from wishlists;

2 个答案:

答案 0 :(得分:3)

INSERT
INTO    wishlists (memberid, gameid, rank)
SELECT  @memberid, @gameid, COALESCE(MAX(rank), 0) + 1
FROM    wishlists
WHERE   memberid = @memberid

替换您的实际memberidgameid代替@ - 前缀参数。

答案 1 :(得分:1)

不完全确定我理解您的架构,但您可能希望使用SQL语句插入...

insert into wishlists (memberid, gameid, rank)
select 
memberid, 
gameid, 
MAX(IFNULL(Rank,0))+1
from wishlists;

编辑:语法...应该是“ifnull”。