2011-04-16 19 views
1

私はこのクエリがあります。これは、5 = 5として、すべてのレコードをもたらすべきであるクエリ結果正しくないレコードが

SELECT id, name FROM users 
WHERE ((id = 1) OR (5 <= 5)) 

が、そうではありません。 id = 1の場合のレコードのみです。

私は間違っていますか?

EDIT: これは、完全なクエリです:

SELECT project_id, project_name, project_description, project_active, 
      users.user_firstname, users.user_lastname FROM projects 
      INNER JOIN users ON projects.user_id = users.user_id 
      WHERE (projects.user_id = 1 || 3 <= 3) 

EDIT: が見つかり、それ=/ 何かが加わると間違っていました。何らかの理由でuser_idがもう存在しませんでした。

+1

と同じです何が起こる:

EXPLAIN EXTENDED SELECT id, name FROM users where id=1 or 5<=5; SHOW WARNINGS; 

Uは、MySQLがクエリである実行わかりますあなたはかっこをすべて削除したら? –

+0

このクエリには何も問題はありません。自分のデータベースをセットアップして使用すると、 'users'のすべての行が表示されます。あなたのテーブルはどのように見えますか?あなたが見たいと思う行は何ですか?そうではありません。 – VoteyDisciple

+1

それから、mysqlインストールに深刻な問題があります。ちょうどここでテストされ、期待通りにすべての結果をロードします。 – Andre

答えて

0

試してみてください。

SELECT id,name FROM users where 1 

ちょうど手段(ID = 1または5 < = 5)は1

0

これで、すべてのレコードを5個以下にしますか?

もしそうであれば、その唯一のIDのようなその

(5 <= 5) 

である "5" のテーブルの行の横

SELECT id, name FROM users 
WHERE id <= 5 

+0

その質問を少し慎重に読んでください。原文は、同音異義語である '(5 <= 5)'を持っています。問題は、なぜ、それが同値化であれば、すべての行が返されるわけではないということです。 – VoteyDisciple

+0

@VoteyDisciple私は以前これを見たことがなかったのですが、他人かもしれませんが、価値がない価値があるかもしれません。それは、MySQLまたはそのISO SQLのユニークな機能です。 – SIFE

+1

ANSI規格です。 2つの値を含め、必要なものを他のものと比較することができます。(生成されたSQL文を除いてはそれほど有用ではありませんが、DBMSは比較するものがあれば値をどのように取得しても気にしません) – VoteyDisciple

0

これは私がそれを行う方法である。この

$q = ("SELECT id, name FROM users WHERE id = 1 || 5 <= 5"); 

を行います。

関連する問題