как подсчитать количество строк в таблице SQL, используя определенные критерии?

#php #mysql #count #row

#php #mysql #подсчитать #строка

Вопрос:

У меня есть два столбца данных. Один столбец называется «like», который содержит либо число 1, либо 0. Другой столбец называется «объект», который может содержать любое слово. Я хочу подсчитать количество строк, где число 1 в столбце «like» совпадает с определенным словом в столбце «object».

Я пытался

 $numrow1 = mysql_query("SELECT * FROM tablename WHERE like = 1 AND object = '$object' "); 
$numlikes = mysql_num_rows($numrow1);
  

но я получил синтаксическую ошибку. Буду признателен за любую помощь.

Ответ №1:

LIKE является оператором сравнения строк sql, возможно даже object . Если у вас есть поле с зарезервированным именем, то вы должны напрямую обратиться к нему или экранировать его.

Переформатируйте свой оператор SQL внутри mysql_query следующим образом:

 SELECT * 
FROM tablename AS T 
WHERE T.like = 1 
      AND T.object = '$object'
  

Ответ №2:

Если вы хотите получить только количество строк, используя count (), это намного эффективнее:

 SELECT count(*) 
FROM tablename 
WHERE `like` = 1 
AND object = '$object'
  

Вы не показали нам сообщение об ошибке, но я предполагаю, что это потому, что like это зарезервированное слово, и поэтому вам нужно заключить имя столбца в кавычки (я бы настоятельно рекомендовал использовать другое имя, чтобы избежать этих проблем в будущем).

Если вы используете MySQL в режиме, совместимом с ANSI, вы также можете использовать стандартные двойные кавычки, чтобы избежать имени столбца:

 SELECT count(*) 
FROM tablename 
WHERE "like" = 1 
AND object = '$object'
  

Я не уверен, но object может быть и зарезервированное слово, поэтому его тоже может потребоваться заключить в кавычки.