SQL 寻找差距

SQL for searching for gaps

我编写了一个查询,用于在 Magento 中搜索 sku 编号中的空白。它在 PHPAdmin 中运行完美,但是当我在 php 页面中测试它时 returns 为空。

    $dbread = Mage::getSingleton('core/resource')->getConnection('core_read');
$strSQL="SELECT * 
FROM catalog_product_entity
LEFT JOIN catalog_product_entity AS t2 ON CAST( t2.sku AS UNSIGNED ) = CAST( catalog_product_entity.sku AS UNSIGNED ) +1
WHERE t2.sku IS NULL 
AND CAST( catalog_product_entity.sku AS UNSIGNED ) >100000
LIMIT 1";
$sql = $dbread->query($strSQL);
$res = $sql->fetchAll();
var_dump($res);

有什么想法吗?

我测试了 table 和 运行 你的代码。当我这样做时,我得到了一个包含 NULLs 的数组作为输出。我将代码调整为:

$dbread = Mage::getSingleton('core/resource')->getConnection('core_read');
$strSQL="SELECT t1.sku 
FROM catalog_product_entity t1
LEFT JOIN catalog_product_entity AS t2 ON CAST( t2.sku AS UNSIGNED ) = CAST( t1.sku AS UNSIGNED ) +1
WHERE t2.sku IS NULL 
AND CAST( t1.sku AS UNSIGNED ) >100000
LIMIT 1";
$sql = $dbread->query($strSQL);
$res = $sql->fetchAll();
var_dump($res);

并且能够得到正确的结果。我不知道为什么,但我假设 SELECT *var_dump 混合导致它 return 只是 [=15= 中 NULL 的字段].由于您只需要 t1 中的最后一个 sku,因此没有理由 return 其余部分。

但这也许不是您遇到的问题。如果您可以提供您获得的输出和您期望获得的输出,那将会有所帮助。