Различия чувствительности к регистру в SELECT COLUMN и COUNT, mysql? - PullRequest
1 голос
/ 02 декабря 2009

Хорошо, я немного запутался здесь. В моей базе данных у меня есть 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, с точки зрения скорости запроса?

1 Ответ

1 голос
/ 02 декабря 2009
$num = mysql_num_rows($sel);

Возвращает количество строк, выбранных по вашему запросу. Для первого запроса, поскольку вы выбираете COUNT(*) из своей таблицы, он возвращает одну строку с одной ячейкой в ​​ней: значение этой ячейки равно 5. Во втором запросе выбираются все записи, которые имеют значение от $str, поэтому mysql_num_rows($sel); действительно вернет 5.

Что касается другого вопроса, первый запрос, если он более эффективен, но если вы ищете количество строк со значением $str, не используйте mysql_num_rows(), а mysql_fetch_row () .

...