【发布时间】:2018-12-02 18:58:40
【问题描述】:
我有两张桌子:游戏和任务
游戏是这样的:
| step | manualTaskCounter | autoTaskCounter | (and other)
----------------------------------------------------------
| 1 | 3 | 1 | ...
----------------------------------------------------------
任务如下所示:
| id | taskType | taskContent |
-------------------------------
| 1 | M | abc |
| 2 | M | cde |
| 3 | A | efg |
| 4 | M | jpq |
由于任务同时包含手动(使用 M taskType)和自动(A)任务,我想选择。我的 API 包含两个变量:mTaskCounter 和 aTaskCounter。例如,如果 mTaskCounter = 3 我想从任务中选择类型为手动任务的第三行。因为它实际上是 id = 4 的行,所以我不能在 WHERE 子句中使用 id。
我已经实现的是:
SELECT
id,
taskType,
taskContent,
(@row:=@row + 1) as rowNumber,
g.manualTaskCounter as mTaskCounter
FROM
tasks t,
(SELECT @ROW:=0) AS r,
(SELECT manualTaskCounter FROM game) AS g
WHERE
g.manualTaskCounter = rowNumber
这表示“where 子句中的未知列 'rowNumber'
我也尝试使用 LEFT JOIN:
SELECT
id,
taskType,
taskContent,
(@row:=@row + 1) as rowNumber,
g.manualTaskCounter as mTaskCounter
FROM
tasks t,
(SELECT @ROW:=0) AS r
LEFT JOIN
`game` g ON g.manualTaskCounter = rowNumber
同样的结果。自从我每天使用mysql以来已经有一段时间了,不知道如何修复它。我也想制作两张表——manualTasks 和 autoTasks 而不是 tasks 所以它可以通过常见的select taskContent from autoTasks a LEFT JOIN game ON a.id = game.autoTaskCounter
【问题讨论】:
-
检查这是否是您需要的:db-fiddle.com/f/hTWXZuVJ1dapbu9UY68LvR/0。在这种情况下,我会给出答案,否则,请根据一些数据样本解释您的预期结果。
-
是的,这完全符合我的要求。谢谢!
-
很高兴知道,我已经做出了解释。
标签: mysql user-variables