我有两张桌子:游戏和任务
游戏看起来像这样:
| 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 而不是任务,这样它就可以通过常见的方式解决问题select taskContent from autoTasks a LEFT JOIN game ON a.id = game.autoTaskCounter