Различия в чувствительности к регистру в SELECT COLUMN и COUNT, mysql?
-
11-09-2019 - |
Вопрос
Хорошо, я здесь немного путаю.В моей базе данных у меня есть 5 строк этих данных => «string@domail.com» (все строчные буквы), и это мой код, запрос 1 (я использую php и mysql):
$str = 'STRING@DOMAIN.COM';
$sel = mysql_query("SELECT COUNT(*)
FROM table
WHERE `column` = '{$str}'");
$num = mysql_num_rows($sel);
echo $num;
Результат 1.Но если я перейду на Query2
SELECT column
FROM table
WHERE `column` = '{$str}'"
Он возвращает 5.
И еще один вопрос: какой запрос мне следует использовать, если я хочу узнать количество строк, существующих в базе данных, запрос 1 или 2, с точки зрения скорости запроса?
Решение
$num = mysql_num_rows($sel);
Это возвращает количество строк, выбранных из вашего запроса.Для первого запроса, поскольку вы выбираете COUNT(*)
из вашей таблицы он возвращает одну строку с одной ячейкой:значение этой ячейки равно 5.Второй запрос выбирает все записи, имеющие значение из $str
, так mysql_num_rows($sel);
действительно вернет 5.
Что касается другого вопроса, сначала запросите, если он более эффективен, но если вы ищете количество строк со значением $str
, не использовать mysql_num_rows()
но mysql_fetch_row().