2016-06-27 29 views
0

は、SELECTステートメントの実行を助ける必要があります。基本的には、最初の値が特定の条件を満たしているときにshow all値を使用する必要があります。私の出力がMYSQL - 条件付きステートメント

ID |F ID| DATE | I  | II | III | 
=========================================== 
1 | 11 | 1/26 | peanut | where| Now | 
------------------------------------------- 
3 | 11 | 1/27 | jelly | at | he | 
------------------------------------------- 

唯一のものだろうので、その後

if the first F ID = peanut 
then show every ID after 

例えば:

は私のデータは、私のような何かを言うことができるようにしたい

ID |F ID| DATE | I  | II | III | 
=========================================== 
1 | 11 | 1/26 | peanut | where| Now | 
------------------------------------------- 
2 | 22 | 1/26 | butter | he | there | 
------------------------------------------- 
3 | 11 | 1/27 | jelly | at | he | 
------------------------------------------- 
4 | 33 | 1/27 | time | huh | go | 
------------------------------------------- 

ある場合私は考えることができる

SELECT * 
FROM table 
WHERE FIRST(I='peanut') 
+0

** **の後にすべてのIDを表示する - これを説明してください。 – 1000111

答えて

0

あなたはとても混乱しています。私はそれを正しく理解することを願っています。

最初FのID =ピーナッツ

あなたはF_ID最初を取得し、変数に格納する必要がある場合:

SELECT @Id = F_ID FROM table WHERE I = 'peanut'

はその後

後にすべてのIDを表示

単純に:

SELECT * FROM table WHERE F_ID >= @Id 
0

サブクエリーを試しましたか?

SELECT * 
FROM `table` 
WHERE `F ID`=(
    SELECT `F ID` 
    FROM (
    SELECT `F ID`, `I` 
    FROM `table` 
    ORDER BY `ID` 
    LIMIT 1 
) AS `derived` 
    WHERE `I`='peanut' 
); 
0

を持つ古典的な変種は、参加:

SELECT 
    t.* 
FROM 
    table t INNER JOIN (
    SELECT 
     F_ID, 
     date 
    FROM 
     table 
    WHERE 
     I = 'peanut' 
) t2 ON t2.F_ID = t.F_ID AND t2.date >= t.date 
0

YOUはF_VAL FROM SUBのQUERY 例 SELECT *を使用してそれを得ることができます。セット内

+------+------+------+--------+-------+-------+ 
| ID | F_ID | DATE | I  | II | III | 
+------+------+------+--------+-------+-------+ 
| 1 | 11 | 1/26 | peanut | where | Now | 
| 2 | 22 | 1/26 | butter | he | there | 
| 3 | 11 | 1/27 | jelly | at | he | 
| 4 | 33 | 1/27 | time | huh | go | 
| 1 | 11 | 1/25 | cake | where | Now | 
+------+------+------+--------+-------+-------+ 

5行(0.01秒)

あなたはFIRST一度作成日以降に作成されたすべてのレコードを取得する場合、その条件

SELECT * FROM F_VAL WHERE F_ID = (SELECT F_ID FROM F_VAL WHERE `I`='peanut'); 
+------+------+------+--------+-------+-------+ 
| ID | F_ID | DATE | I  | II | III | 
+------+------+------+--------+-------+-------+ 
| 1 | 11 | 1/26 | peanut | where | Now | 
| 3 | 11 | 1/27 | jelly | at | he | 
| 1 | 11 | 1/25 | cake | where | Now | 
+------+------+------+--------+-------+-------+ 
3 rows in set (0.00 sec)) 

WITH ALLレコードを取得したい場合

mysql> SELECT F.* FROM F_VAL F INNER JOIN (SELECT F_ID,DATE FROM F_VAL WHERE `I`='peanut') X ON X.F_ID=F.F_ID AND F.DATE>=X.DATE ; 
+------+------+------+--------+-------+-------+ 
| ID | F_ID | DATE | I  | II | III | 
+------+------+------+--------+-------+-------+ 
| 1 | 11 | 1/26 | peanut | where | Now | 
| 3 | 11 | 1/27 | jelly | at | he | 
+------+------+------+--------+-------+-------+ 
2 rows in set (0.00 sec) 
+0

上記の例では、名前がF_VALのテーブルを作成しました。あなたの名前に合わせて変更します。 –

+0

彼は、最初の行が条件(つまり、 'I' = 'ピーナッツ')と一致する場合にのみ行を返すように指定しました。 –

+0

@JeremiahMegel更新されたクエリ –

関連する問題