2

クエリに問題があります。

SELECT id, pseudo, nom, prenom, sexe, ville, 
       FLOOR(DATEDIFF (NOW(), date_naissance)/365) AS mAge 
FROM user 
WHERE sexe = 'Homme' AND mAge BETWEEN 18 AND 25 OR ville = 'Bordeaux'

where条件で一致するユーザーを返すことになっています。問題は次のとおりです。mAge が存在しません。次のエラーが表示されます。

1054 - 'where 句' の不明な列 'mAge'

where条件でエイリアスが正しく機能していないようです。

mAge の WHERE 句を削除すると、mAge エイリアスを正常に取得できます。

私はあなたたちが必要です

前もって感謝します !

4

2 に答える 2

6

WHERE 句でカラム エイリアスを使用することはできません: http://dev.mysql.com/doc/refman/5.0/en/problems-with-alias.html

クエリを再考するか、次のように変更する必要があります。

SELECT id, pseudo, nom, prenom, sexe, ville, 
   FLOOR(DATEDIFF (NOW(), date_naissance)/365) AS mAge 
FROM user 
WHERE sexe = 'Homme' AND 
FLOOR(DATEDIFF (NOW(), date_naissance)/365) BETWEEN 18 AND 25 
OR ville = 'Bordeaux'

Ps また、AND と OR を見たいと思うかもしれません。また、いくつかの括弧を含めたいと思うかもしれません。

于 2013-07-18T22:08:40.853 に答える
1

このクエリを使用して、ユーザーの年齢 (年と月) を取得します

SELECT 
username
,date_of_birth
,(PERIOD_DIFF( DATE_FORMAT(CURDATE(), '%Y%m') , DATE_FORMAT(date_of_birth, '%Y%m') )) DIV 12 AS years
,(PERIOD_DIFF( DATE_FORMAT(CURDATE(), '%Y%m') , DATE_FORMAT(date_of_birth, '%Y%m') )) MOD 12 AS months
FROM users

今日の結果:

chucknorris, 1979-04-10 00:00:00, 35, 2
于 2014-06-06T12:33:35.383 に答える