我在下面有一个选择声明。 tblplayer包含709条Game =' FPS'的记录。 tblPlayerPoints包含1个带有值的记录(2,' FPS',812,0)。 sql应返回709条记录,我可以通过这些记录插入值(1,' FPS',playerid,0)。 但是在运行下面的SELECT时,它只返回708条记录。所以它排除了已经存在的记录。
它应忽略该记录,因为第一个值(2)与新的第一个值(1)不同。我尝试添加AND tblPlayerPoints.Gamenumber< 2然后我得到0记录而不是709。
删除tblPlayerPoints.Points IS NULL后,我确实获得了709条记录。但是我无法删除该行,因为如果一行中包含值(1,' FPS',playerid,0)已经存在,则不应再次添加该行。
SELECT 1 , 'FPS', tblPlayer.PlayerId, 0
FROM tblPlayer
LEFT JOIN tblPlayerPoints ON tblPlayer.Id = tblPlayerPoints.PlayerId
WHERE tblPlayer.Game = 'FPS'
AND tblPlayer.Subscription = '1'
AND tblPlayerPoints.Points IS NULL
完整插入示例:
INSERT INTO tblpronoploegritpunten ("1","FPS",PlayerId,"0")
SELECT 1 , 'FPS', tblPlayer.PlayerId, 0
FROM tblPlayer
LEFT JOIN tblPlayerPoints ON tblPlayer.Id = tblPlayerPoints.PlayerId
WHERE tblPlayer.Game = 'FPS'
AND tblPlayer.Subscription = '1'
AND tblPlayerPoints.Points IS NULL
此完整插入应向tblPlayerPoints添加709条记录 如果我将完整插入示例(订阅除外)中的" 1&#34更改为" 2" s它应该只添加708条记录,因为已经有一条记录开始价值2。
答案 0 :(得分:1)
根据我对您的问题的理解,而不是
and tblPlayerPoints.Gamenumber is null
你可能想和
一起去and IFNULL(tblPlayerPoints.Gamenumber,0) <> 1