Mysql belirli satır numaraları dönmek

4 Cevap php

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.

4 Cevap

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ü.