0

紛らわしいタイトルですみません。より良いものを思いつくことができませんでした。

さて、フィールドid、from、to、messageを持つテーブルメッセージがあります

ジョンとネイトからデイブへのメッセージがあるとしましょう

だからそれはそのように見えるでしょう

id|from|to|message
1|John|Dave|Hey    
2|Nate|Dave|Yooo    
3|John|Dave|Sup    
4|Nate|Dave|Waazza

それらがもっとあると想像してください。

わかりました Dave のメッセージを抽出したいので、そのようにします

SELECT * FROM messages WHERE ˙to` = 'Dave' ORDER BY id ASC

すべて問題ありませんが、これはJohnNateの両方からのメッセージを示しています。

どちらか(1つ)からのみメッセージを抽出する方法はありますか? ジョンからのメッセージだけを抽出するように。

私は別の WHERE ステートメントを実行することを認識していますが、誰からのメッセージではなく、誰がメッセージであるかのみを知っている解決策を探しています

4

3 に答える 3

1
SELECT * FROM message WHERE `to` = 'Dave' 
AND `from` IN (SELECT MIN(`from`) FROM message WHERE `to` = 'Dave') ORDER BY id ASC; 

これはあなたが探しているものですか?

デモ

于 2013-08-09T18:29:25.777 に答える
1

from を知らなくても、たとえば次のようなサブクエリを使用できます。

SELECT * 
    FROM messages 
   WHERE `to` = 'Dave' AND 
         `from` = (SELECT `from` 
                     FROM messages 
                    WHERE `to` = 'Dave'
                    LIMIT 1)
ORDER BY id ASC;

最小の使用:

SELECT * 
    FROM messages 
   WHERE `to` = 'Dave' AND 
         `from` = (SELECT MIN(`from`)
                     FROM messages 
                    WHERE `to` = 'Dave'
                    LIMIT 1)
ORDER BY id ASC;

MAX の使用:

SELECT * 
    FROM messages 
   WHERE `to` = 'Dave' AND 
         `from` = (SELECT MAX(`from`)
                     FROM messages 
                    WHERE `to` = 'Dave'
                    LIMIT 1)
ORDER BY id ASC;

サブクエリでは、MAX/MIN関数を使用して異なるものを取得できます。

上記のすべてのクエリのライブ デモ。

注:これは、メッセージを検索する 2 人の名前を知っている場合に与えられます。

ANDから名前に一致するデータを取得するために使用できます。tofrom

  SELECT * 
    FROM messages 
   WHERE `to` = 'Dave' AND
         `from` = 'John' 
ORDER BY id ASC;

ライブデモ。

または、両方のすべてのメッセージに以下を使用できます。

  SELECT * 
    FROM messages 
   WHERE (`to` = 'Dave' AND
         `from` = 'John') OR
         (`to` = 'John' AND
         `from` = 'Dave')
ORDER BY id ASC;

ライブデモ。

于 2013-08-09T18:27:17.670 に答える
-2

ところで、' (シングル クォーテーション) と ` (バック ティック) を混在させています。 ここを見る

あなたの質問に関しては、を使用して要件を簡単に追加できますAND

SELECT * FROM messages WHERE `to`='Dave' AND `from`='John' ORDER BY id ASC

John からのメッセージのみが表示されるようになりました。

于 2013-08-09T18:26:07.777 に答える