Ben bir veritabanını sorgulamak ve 1, 10 ve 25 örneğin belirli satır numaraları dönmek istiyorum.
Bu mümkün mü yoksa (Ben ihtiyacım olanları sonra sadece çıkış satır aracılığıyla veya 1 sorgu ve döngü) 3 sorguları yapmak gerekir
php kullanarak.
Eğer gerektiren belirli kimlikleri varsa, sadece satırlar boyunca bir şey kullanabilirsiniz ..
SELECT XXX FROM table WHERE XXX_id IN (1, 10, 25) ORDER BY XXX
... Bu satırları geri almak için. Ancak sadece keyfi sıra numaralarının sonra iseniz, o zaman kadar ben farkında değilim gibi birden sorguları kullanmak gerekecek. (Ya da geri gerekli satırları koparmak için PHP, vb kullanabilirsiniz.)
Dışarı çıkar elde etmek ne çalışıyorsun?
kullanmak gerekir limit clause:
ilk satır için:
select * from table limit 0, 1
onuncu satır:
select * from table limit 9, 1
25. satırdan için:
select * from table limit 24, 1
SOLUTION WITH JUST ONE QUEERY:
Eğer php altında iseniz, kullanabilirsiniz: mysql_fetch_row:
<?php
$result = mysql_query(" select * from table");
if (!$result) {
echo 'Could not run query: ' . mysql_error();
exit;
}
$row = mysql_fetch_row($result);
echo $row[0]; // 1st
echo $row[9]; // 10th
echo $row[24]; // 25th
?>
Sık sık bunu yapmak gerekir (ve db büyükse), ayrıca (daha spesifik - satır id numarası eşleştirmeleri için) satır numaraları saklamak için varsa bir yerde.
MyTable
----
id
row_nr
...
ve bir girişi kaldırmak row_nr en her zaman güncelleyebilirsiniz.
- yani sen = 10 id bir girişi kaldırmak, sen var
UPDATE MyTable SET row_nr = row_nr - 1 WHERE id > 10
ekleyerek satır kullanın
INSERT INTO MyTable (whatever, row_nr)
VALUES ('thatever', (
SELECT MAX(MT2.row_nr)+1 FROM MyTable as MT2
))
-
Sonra kullanabilirsiniz
SELECT XXX FROM MyTable WHERE row_nr IN (1, 10, 25)
şeyleri seçerken.
Burada bir sorgu kullanarak RowNumber ile birden çok satır seçmek için benim çözüm:
SELECT * FROM
(SELECT @row := @row + 1 as row, t.*
FROM `default_red_albums` t, (SELECT @row := 0) r) AS view
WHERE `row` IN(4,8)
Sorgu ekstra bir "satır" sütunu olan bir tablo döndürür. Mainquery sadece burada deyimi kullanarak filtre vardır.
Bir 14000 satır masanın üzerinde test ve 0.0672 saniye sürdü.