2011-07-26 8 views
0

J'ai une table comme ceci:En comparant deux colonnes dans une table

+---------+----------+ 
| column1 | column2 | 
+---------+----------+ 
| 100 | 50 | 
| 3 | 10 |   
| 7 |  7 | 
+---------+----------+ 

Je voudrais une instruction SQL qui compare les données entre column1 et column2, en comptant le nombre de lignes pour lesquelles column1 a une valeur plus petite que cela dans column2.

Peut-être quelque chose comme:

$result="select * from table where column1 <= column2"; 
$a = mysql_num_rows ($result); 
echo $a; 

Dans cet exemple, il me donnerait un résultat de 2, représentant les lignes correspondantes # 2 et # 3.

Répondre

3
SELECT count(*) AS total_rows 
FROM table_with_data 
WHERE column1 <= column2 
1

Avez-vous essayé d'exécuter cette requête? Il me semble que cela donnerait la réponse que vous cherchez.

$result = mysql_query("SELECT * FROM `table` WHERE `column1` <= `column2`"); 
echo mysql_num_rows($result); 

Cependant, il serait plus efficace de récupérer le nombre de MySQL, plutôt que de récupérer toutes les données de MySQL, puis le compter après le fait:

$result = mysql_query("SELECT COUNT(*) AS `n` FROM `table` WHERE `column1` <= `column2`"); 
$row = mysql_fetch_assoc($result); 
echo $row[0]; 
Questions connexes