【发布时间】:2013-12-04 13:29:56
【问题描述】:
我正在尝试获取我的 OXSEO 表的 OXSEOURL。
结构:
oxobjectid |牛瑟尔 | oxparams
数据:
http://imageshack.com/a/img268/7443/3xr4.png
http://imageshack.com/a/img42/315/8bdu.png
我最深的 SEO URL 总是在 OXPARAMS 字段中具有更高的值。
只有数值,其他的从不计算..
返回应该是:
http://imageshack.com/a/img29/8404/4jbv.png
我昨天找到了一个解决方案,但是速度很慢,现在我正在尝试一种更快的方法。
所以我想获得具有最大 oxparams 值的相同 oxobjectid 的 oxseourl。
我有超过 330.000 行,所以每毫秒都很重要..
我只需选择以“tbproduct_”objectid 开头的产品的网址。
我的查询:
SELECT seo2.oxseourl, seo2.oxobjectid, seo2.oxparams
FROM oxseo AS seo2
JOIN (
SELECT oxobjectid,
MAX(oxparams) AS maxparam
FROM oxseo
GROUP BY
oxobjectid
) AS usm
ON usm.maxparam = seo2.oxparams
WHERE seo2.oxobjectid LIKE '%tbproduct_%'
AND seo2.oxparams REGEXP '^-?[0-9]+$'
但这会为产品返回相同的行。
感谢您的帮助。
【问题讨论】:
-
你是不是错过了你的 JOIN 条件的一部分!?!
-
你指的是哪一部分?
-
如果 oxobjectid 以
tbproduct开头,那么您可以使用WHERE seo2.oxobjectid LIKE 'tbproduct_%',它允许使用索引。 -
将seo2的objectid与usm的objectid关联的位
-
但实际上第一步需要整理您的数据。尝试以这种方式进行搜索将非常低效 - 并且容易导致错误。