Як дізнатися кількість записів в sql-вибірці
Ви тут: Головна - MySQL - SQL - Як дізнатися кількість записів в SQL-вибірці
Дуже часто нам не потрібно отримувати дані з таблиці, однак, нам необхідно дізнатися кількість записів в певній SQL-вибіркою. в окремому випадку, кількість записів в таблиці. Ось як дізнатися кількість записів в SQL-вибіркою. я розповім в цій невеликій статті.
Насправді все дуже просто, і нам потрібна всього лише функція COUNT ():
SELECT COUNT (*) FROM `table` WHERE` field_1` = 'value_1'
Після виконання даного запиту буде повернений result_set. в якому буде зберігатися масив, що містить елемент COUNT (*) зі значенням кількості записів в таблиці "table", де поле "field_1" має значення "value_1".
Інший приклад. Припустимо, треба дізнатися просто кількість записів. Тоді те ж саме, але без WHERE:
SELECT COUNT (*) FROM `table`
І давайте, наостанок, підкину ще один приклад. Припустимо, Вам необхідно підрахувати кількість унікальних записів в таблиці:
SELECT COUNT (DISTINCT `field_1`) FROM` table`
Ось такою нехитрою функцією COUNT () можна легко дізнаватися кількість записів в SQL-вибіркою. виймання при цьому самі записи і заощаджуючи ресурси.
Додав перед кожним UNION ALL SELECT COUNT (*) as `r_1` FROM` works` WHERE `razdelName` = 'sol_testo' AND` del` = '' UNION ALL SELECT COUNT (*) as `r_2` FROM` works` WHERE ` razdelName` = 'tochka_k_tochke' AND `del` = '' UNION ALL SELECT COUNT (*) as` r_3` FROM `works` WHERE` razdelName` = 'svad_decor' AND `del` = '' Видає помилку Fatal error: Call to a member function fetch_assoc () on a non-object. Зробив так, щоб всі запити робилися окремо - так працює. Так напевно і залишу. ) Все одно СПАСИБІ за спробу допомогти. )
Ще раз повторюю: замініть UNION на UNION ALL. У Вас хіба був перед першим select UNION? Ні? Тоді навіщо додавали?
прибрав перед першим SELECTом і стало як і раніше видавати тільки один Array ([r_1] => 52) і все. Гаразд, Михайло, для мене це не критично зараз. Окремо всі вважає як мені треба і слава Богу. )) Дякую ще раз.
Не може такого бути, значить, знову щось зробили не так. Я перевірив особисто даний запит у себе, і в мене все прекрасно працює. Уважніше треба робити те, що я пишу.
Привіт Михайло. Щоб ви не сказали а є якийсь інший спосіб для розрахунку кількість записів у вибірці? Тому що у мене запит COUNT (*) займе 30-40 сек. У базі приблизно 6 мільйон записів.
SELECT DISTINCT `column1` FROM` my_table`; SELECT FOUND_ROWS (); Якщо вбити в phpmyadmin, дійсно повертає кількість унікальних записів, але в PHP достукатися до цього числа мені не вдалося, що не вивів навіть Resourse.
Якщо в базі (правильніше в таблиці) 6 млн. Записів, то вже точно має сенс задуматися про оптимізацію запиту. Швидше COUNT (*) може відпрацювати тільки COUNT (*) :))) Ось прям потрібно порахувати всі записи в таблиці? Швидше за все є якась умова в WHERE? Ось тоді можна проіндексувати таблицю, щоб рахунок йшов не по FULL SCAN, а за індексом.
Привіт, Михайло. Підкажіть, скільки всього (максимум) записів sql запит може витягнути (через Select)?