SQL选择10个随机行和1个“x”长度

时间:2014-07-28 23:10:27

标签: php mysql

    $randNo = mt_rand(0,$ProductsCount);
    $sql0 = "SELECT sku FROM catalog_product_flat_1 LIMIT ". $randNo . ",10";
    $data2=$connection->query($sql2);
    $result2=$data2->fetch();

我试图从我的数据库中随机获取SKU(200k产品),其长度为13个字符(30-40%),所以我考虑选择10个产品并获得13个字符的产品如何从这个选择中选择13个字符?或者任何其他更好的方法来解决这个问题我需要尽可能快的速度。

2 个答案:

答案 0 :(得分:0)

如果我正确理解您的问题,请尝试:

$sql0 = "SELECT sku FROM catalog_product_flat_1 where LENGTH(sku) = 13 ORDER BY RAND() LIMIT 1";

但是,请参阅此内容以获得可能具有更好性能的更多解决方案:https://stackoverflow.com/a/23568354/2517689

我想我覆盖了@ Barranka的编辑来修复我的RANDOM()到RAND()。感谢您的编辑。

答案 1 :(得分:0)

尝试这样做:

首先,将$ProductsCount设置为:

select count(*)
from catalog_product_flat_1
where length(sku) = 13;

然后做:

$randNo = mt_rand(0,$ProductsCount);
$sql0 = "SELECT sku FROM catalog_product_flat_1 WHERE length(sku) = 13 LIMIT ". $randNo . ",1";
$data2=$connection->query($sql2);
$result2=$data2->fetch();

这应该比排序更快。