[英]Why this MySQL query with subselect and Max() wont work?
為什么此MySQL查詢無法正常工作?
使用子選擇,我只想獲取最后插入的ID /價格。
select preco_id, centroide_produto_id, produto_id, preco_venda from precos A, cluster_copy3 CL
where A.preco_id = (select MAX(preco_id) from precos B where B.preco_id=A.preco_id )
and CL.centroide_produto_id = 9805
and A.produto_id=CL.similar_produto_id
您的子查詢是“相關的”,因為MAX(X) WHERE X=X
是X,所以WHERE的那部分將始終為true。因此,您將獲得與9805的cluster_copy3記錄相關聯的每個 precos記錄。如果我正確猜到了您想要的結果,則子查詢應該修復它。
我認為這可能更符合您的需求:
SELECT preco_id, centroide_produto_id, produto_id, preco_venda
FROM precos AS A
INNER JOIN cluster_copy3 AS CL ON A.produto_id=CL.similar_produto_id
WHERE A.preco_id = (
SELECT MAX(preco_id)
FROM precos AS A1
INNER JOIN cluster_copy3 AS CL1 ON A1.produto_id=CL1.similar_produto_id
WHERE and CL1.centroide_produto_id = 9805
)
或這也應該工作:
SELECT preco_id, centroide_produto_id, produto_id, preco_venda
FROM precos AS A1
INNER JOIN cluster_copy3 AS CL1 ON A1.produto_id=CL1.similar_produto_id
WHERE and CL1.centroide_produto_id = 9805
ORDER BY preco_id DESC
LIMIT 1
;
根據實際數據,我不確定哪個會更快。
子查詢中的條件不應該是必需的。 像這樣
select preco_id, centroide_produto_id, produto_id, preco_venda from precos A, cluster_copy3 CL
where A.preco_id = (select MAX(preco_id) from precos B )
and CL.centroide_produto_id = 9805
and A.produto_id=CL.similar_produto_id
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.