Diyelim ki satırların% 10'unu silmek istiyorum, bunun için bir sorgu var mı? gibiToplam sayıyla bir yüzde DELETE
şey:
DELETE FROM tbl WHERE conditions LIMIT (SELECT COUNT(*) FROM tbl WHERE conditions) * 0.1
Diyelim ki satırların% 10'unu silmek istiyorum, bunun için bir sorgu var mı? gibiToplam sayıyla bir yüzde DELETE
şey:
DELETE FROM tbl WHERE conditions LIMIT (SELECT COUNT(*) FROM tbl WHERE conditions) * 0.1
Sadece, filtrelenmiş satır toplam miktarı iade php aracılığıyla hesaplamak ve benim SİL sorguda bir sınır olarak bu değeri kullanırsınız. Yalnızca özel bir sırada, satır kabaca% 10 gerekiyorsa
DELETE FROM ( SELECT h2.id
FROM ( SELECT COUNT(*) AS total
FROM tbl
WHERE conditions) AS h
JOIN ( SELECT *, @rownum := @rownum + 1 AS rownum
FROM tbl, (SELECT @rownum := 0) AS vars
WHERE conditions) AS h2
ON '1'
WHERE rownum < total * 0.1) AS h3
Bunu yapmak gerekir: DELETE böyle bu bir şekilde gelişmiş bir sorgu izin veriyorsa
$query = mysql_query("SELECT COUNT(*) FROM tbl WHERE conditions");
$int = reset(mysql_fetch_array($query));
$int = round($int * 0.1);
mysql_query("DELETE FROM tbl WHERE conditions LIMIT {$int}");
emin değilim hüner:
DELETE FROM tbl WHERE RAND() <= 0.1
Ancak, ben nedeniyle rasgele sayılar üreten yükü çok büyük veri setlerini bunu kullanmanızı önermiyoruz.
Diğer taraftan, daha fazla satır, yüzde 10'a yakın yüzde olabilir. –
Yup. Küçük satırlar için çok doğru değil. Kabaca 100 satırın üstünde bir şey hayal etsem iyi olur. – Polynomial
Hayır bazı koşulların ve bazı ORDER BY – dynamic
Bunu yapabileceğimi biliyorum: D – dynamic
Muhtemelen gerçekten çok uzağındadır, ama belki de yukarıdaki sorgu bunu yapabilir mi? :) –
Eski güzel php yolu ile stich olacak – dynamic