我的代码:

SELECT pulpi_juegos.*, mapa.cat_id AS IDcategoria
FROM pulpi_juegos
INNER JOIN pulpi_categorias_mapa AS mapa ON pulpi_juegos.id=mapa.game_id
WHERE pulpi_juegos.Estado != 1
AND IDcategoria = 15
ORDER BY pulpi_juegos.id DESC
LIMIT 0,30;

问题是我得到以下错误:
Unknown column 'IDcategoria' in 'where clause'

有人知道为什么吗?

最佳答案

SQL总是在SELECT语句之后执行WHERE语句。
如果我错了,请更正我,但SQL执行您的语句如下:

FROM
INNER JOIN
WHERE
AND
SELECT
ORDER BY

因此,正如您现在看到的,当SQL进入AND语句时,它还不知道mapa.cat_id实际上表示为IDcategoria。一个简单的解决方案是将IDcategoria中的AND更改为mapa.cat_id
所以你的问题是:
SELECT pulpi_juegos.*, mapa.cat_id AS IDcategoria
FROM pulpi_juegos
INNER JOIN pulpi_categorias_mapa AS mapa ON pulpi_juegos.id=mapa.game_id
WHERE pulpi_juegos.Estado != 1
AND mapa.cat_id = 15
ORDER BY pulpi_juegos.id DESC
LIMIT 0,30;

10-06 16:04