2016-06-27 2 views
0

нужна помощь при выполнении инструкции SELECT. В основном мне нужно использовать show all values, когда первое значение соответствует определенному условию.MYSQL - условное выражение Где

Для примера, если мои данные

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 | 
------------------------------------------- 

Я хочу, чтобы иметь возможность сказать что-то вроде:

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 | 
------------------------------------------- 
3 | 11 | 1/27 | jelly | at | he | 
------------------------------------------- 

Единственное Я могу думать о

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

** затем показать каждый идентификатор после ** - пожалуйста, объясните это. – 1000111

ответ

0

Вы сомневаетесь, что это довольно запутанно. Надеюсь, я правильно понял.

если первый ID F = арахисовое

Вы должны получить 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

вы можете получить ИСПОЛЬЗОВАНИЕ подзапроса Примера SELECT * FROM F_VAL;

+------+------+------+--------+-------+-------+ 
| 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 сек)

ЕСЛИ вы хотите получить все записи данного условия

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)) 

ЕСЛИ вы хотите получить все записи, созданные после ПЕРВЫЙ РАЗ Дата создания

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 Спасибо, обновленный запрос –

Смежные вопросы