aşağıdaki tablo vardır:MySQL sorgusu maximums ve minimum sınırlamak için
INSERT INTO `test_table` (`id`, `x`, `y`) VALUES (1, 0, 10), (2, 6, 10),
(3, 9, 10), (4, 2, 9), (5, 4, 9), (6, 3, 8), (7, 7, 8), (8, 9, 8),
(9, 0, 7), (10, 2, 7), (11, 5, 7), (12, 10, 7), (13, 2, 6), (14, 7, 6),
(15, 0, 5), (16, 4, 5), (17, 9, 5), (18, 1, 4), (19, 3, 4), (20, 5, 4),
(21, 10, 4), (22, 8, 3), (23, 3, 2), (24, 6, 2), (25, 2, 1), (26, 8, 1),
(27, 0, 0), (28, 5, 0), (29, 6, 0), (30, 10, 0);
ve aşağıdaki resim temsil:
kırmızı veya pembe hücrelerdeki sayıların gösterdiği " id "ve bu hücrelerin koordinatları" x "ve" y "dir. Tek yapmam gereken, gri hücrede 10 hücreyi hariç tutarak tüm hücreleri (yalnızca kırmızı olanları) göstermek için bir sorgu oluşturmaktır.
SELECT * FROM `test_table` WHERE
x between 0 and 10 and
x not between 2 and 8 and
y between 0 and 10 and
y not between 2 and 7
order by id ASC
LIMIT 30
ızgara feryat 0 ve her iki yönde (resimde gösterilmiyor) 10 ötesindedir hayal edilmesi;:
Şimdiye kadar bu var Sorgu çok fazla limite sahip olmalıdır. Her neyse, çıktı istediğim şey değil çünkü sadece köşelerde (yeşil alanlar içinde olanlar) hücreleri veriyor: 1, 3, 8, 27 ve 30
Bu sorguyu çıkarmak için başka bir yaklaşım olacaktır:
SELECT * FROM `test_table` WHERE
x between 2 and 8 and
y between 2 and 7
order by id ASC
LIMIT 30
bu birinden
:
SELECT * FROM `test_table` WHERE
x between 0 and 10 and
y between 0 and 10
order by id ASC
LIMIT 30
... ama yine; ben sadece x[2:8],y[2,7]
hariç tutması gerekir
Çok teşekkürler, hayatımı kurtardın! Gerçekten basit bir şey olduğunu biliyordum! – cronos