我的 SQL 代码:
SELECT (
SELECT COUNT(1)
FROM FAVORI_DUALAR
WHERE DuaID = D.DuaID
AND PID = 'L3FNCPEVME36'
) AS Eklimi,
(
SELECT COUNT(1)
FROM EDILEN_DUALAR
WHERE DuaID = D.DuaID
AND PID = 'L3FNCPEVME36'
) AS Okudum,
D.Tarih,
D.DuaID,
D.DuaBaslik,
D.DuaTuru,
D.DuaSayisiSiniri,
D.DuaIcerik,
D.DuaMeal,
D.DuaArapca,
D.PID,
(
SELECT COUNT(1)
FROM EDILEN_DUALAR
WHERE DuaID = D.DuaID
) AS Okundu
FROM DUALAR D
WHERE D.Aktif = '1'
AND (D.DuaTuru = 2 OR D.DuaTuru = 1 AND Okudum = 0)
ORDER BY
D.Tarih DESC
LIMIT 9
Error : #1054 - Unknown column 'Okudum' in 'where clause'
我写的
SELECT COUNT(1)
FROM EDILEN_DUALAR
WHERE DuaID = D.DuaID
AND PID = 'L3FNCPEVME36') AS Okudum
但我仍然在查询中收到错误。
最佳答案
您的 Okudum 字段是查询中的计算字段。这个不能直接引用(只能在ORDER BY中)。
因此您可以在 where 子句中使用:
WHERE ... AND (SELECT COUNT(1) FROM EDILEN_DUALAR WHERE DuaID = D.DuaID AND PID = 'L3FNCPEVME36') = 0
或者你可以创建一个子查询: 使用 EDILEN_DUALAR 作为子查询进行联接。
SELECT (
SELECT COUNT(1)
FROM FAVORI_DUALAR
WHERE DuaID = D.DuaID
AND PID = 'L3FNCPEVME36'
) AS Eklimi,
ED.Okudum,
D.Tarih,
D.DuaID,
D.DuaBaslik,
D.DuaTuru,
D.DuaSayisiSiniri,
D.DuaIcerik,
D.DuaMeal,
D.DuaArapca,
D.PID,
(
SELECT COUNT(1)
FROM EDILEN_DUALAR
WHERE DuaID = D.DuaID
) AS Okundu
, D.Aktif
FROM DUALAR D LEFT JOIN
(SELECT DuaID, COUNT(1) AS Okudum
FROM EDILEN_DUALAR
WHERE PID = 'L3FNCPEVME36'
GROUP BY DuaID ) ED
ON ED.DuaID = D.DuaID
WHERE D.Aktif = '1'
AND (D.DuaTuru = 2 OR D.DuaTuru = 1 AND (ED.Okudum IS NULL OR ED.Okudum = 0))
ORDER BY
D.Tarih DESC
关于mysql - 别名导致 where 子句出错 - MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37567733/