所以我有个扳机
CREATE TRIGGER `onUpdatePlayerTracker` AFTER UPDATE ON `playtracker`
FOR EACH ROW UPDATE players
SET deckplayedmost = (SELECT deckname
FROM playTracker
WHERE playerID = old.playerID
AND amount = (SELECT max(amount)
FROM playtracker
WHERE playerID = old.playerID
LIMIT 1))
,
deckplayedleast =(SELECT deckname
FROM playTracker
WHERE playerID = old.playerID
AND amount = (SELECT min(amount)
FROM playtracker
WHERE playerID = old.playerID
LIMIT 1))当我试图更新播放跟踪器时
PLAYTRACKER
PlayerID DeckName Amount
6 Space 1
4 Space 0
3 Space 1
5 Space 2
2 Space 1
1 Space 3
6 Sky 3
5 Sky 1
4 Sky 2
2 Sky 0
1 Sky 3
3 Sky 1
5 Ocean 3
4 Ocean 3
3 Ocean 0
1 Ocean 8
2 Ocean 4
6 Ocean 2
3 Mystic 2
2 Mystic 3
5 Mystic 2
6 Mystic 4
4 Mystic 1
1 Mystic 1
4 Forest 1
6 Forest 5
5 Forest 2
3 Forest 1
2 Forest 2
1 Forest 3
6 Desert 3
5 Desert 4
4 Desert 2
3 Desert 1
2 Desert 3
1 Desert 2这应该触发触发器,我得到一个错误,说更新不能完成,因为结果包含超过一行。它没有指定多个返回来自何处。它应该更新下面的球员表。
Players
PlayerID PlayerName DeckPlayedMost DeckPlayedLeast FavCardType
1 Daniel Ocean Mystic Duel
2 Gavin Ocean Mystic Event
3 Patrick Ocean Mystic Exchange
4 Joe Ocean Mystic Attack
5 George Ocean Mystic Event
6 Robert Ocean Mystic Rares这篇文章包含了我的文章,因为我的文章包含了太多的代码,没有足够的解释。就像我想我已经提供了足够的解释,我知道它可以更好,更详细,什么不是,但我是新手。坦率地说,我仍然惊讶于人们的回答!我的意思是我很感激,学习可能是一项艰巨的挑战,是对自我的一次真正的考验,我感谢你们的帮助。让这一切的压力更容易控制。
发布于 2016-04-28 01:32:22
这将消除该错误,但我没有查看您的查询是否正确,否则。
SET deckplayedmost = (SELECT deckname
FROM playTracker
WHERE playerID = old.playerID
AND amount = (SELECT max(amount)
FROM playtracker
WHERE playerID = old.playerID
LIMIT 1)
LIMIT 1)
,
deckplayedleast =(SELECT deckname
FROM playTracker
WHERE playerID = old.playerID
AND amount = (SELECT min(amount)
FROM playtracker
WHERE playerID = old.playerID
LIMIT 1)
LIMIT 1)https://stackoverflow.com/questions/36901939
复制相似问题