【发布时间】:2010-01-05 20:59:38
【问题描述】:
好的,我有这个查询,它给了我 DISTINCT product_series,加上表中的所有其他字段:
SELECT pi.*
FROM (
SELECT DISTINCT product_series
FROM cart_product
) pd
JOIN cart_product pi
ON pi.product_id =
(
SELECT product_id
FROM cart_product po
WHERE product_brand = "everlon"
AND product_type = "'.$type.'"
AND product_available = "yes"
AND product_price_contact = "no"
AND product_series != ""
AND po.product_series = pd.product_series
ORDER BY product_price
LIMIT 1
) ORDER BY product_price
这很好用。我也是按价格订购的,所以我可以获得每个系列的起始价格。不错。
但是今天我的老板告诉我,这个查询中显示的所有产品都是metal_type 白金,他想显示随机金属类型。所以我在 ORDER BY 价格之后将 RAND() 添加到 order by 中,这样我仍然会得到最低价格,但是最低价格的随机金属.. 这是新的查询:
SELECT pi.*
FROM (
SELECT DISTINCT product_series
FROM cart_product
) pd
JOIN cart_product pi
ON pi.product_id =
(
SELECT product_id
FROM cart_product po
WHERE product_brand = "everlon"
AND product_type = "'.$type.'"
AND product_available = "yes"
AND product_price_contact = "no"
AND product_series != ""
AND po.product_series = pd.product_series
ORDER BY product_price, RAND()
LIMIT 1
) ORDER BY product_price, RAND()
当我运行这个查询时,MySQL 完全关闭并告诉我有连接太多我接到主机管理员的电话,问我到底做了什么。
我不相信这可能只是将 RAND() 添加到查询中,我认为这一定是巧合。一切都修复后,我等了几个小时,然后再次运行查询。马上...同样的问题。
那么发生了什么?因为我没有头绪。我的查询有问题吗?
谢谢!!!!
【问题讨论】:
-
不能解决您的问题,但您确实应该使用查询参数而不是字符串连接。
-
@Mark,你能给我或给我一个例子吗?谢谢。
标签: sql mysql random sql-order-by