简体   繁体   English

MYSQL-条件语句

[英]MYSQL - Conditional Where Statement

need help running a SELECT statement. 需要帮助来运行SELECT语句。 Basically I need to use the show all values when the first value meets a certain condition. 基本上,当第一个值满足特定条件时,我需要使用显示所有值。

For Example if my data is 例如,如果我的数据是

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

I want to be able to say something like: 我希望能够说些类似的话:

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

so then my output would be 所以我的输出是

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

The only thing I can think of is 我唯一能想到的是

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

You're question is quite confusing. 您的问题很令人困惑。 I hope I understood it correctly. 我希望我能正确理解。

if the first F ID = peanut 如果第一个F ID =花生

You need to get the F_ID first and store it in a variable: 您需要首先获取F_ID并将其存储在变量中:

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

then show every ID after 然后显示每个ID

Simply: 只是:

SELECT * FROM table WHERE F_ID >= @Id

Have you tried subqueries? 您是否尝试过子查询?

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

The classic variant with join: 具有join的经典变体:

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

YOU CAN GET IT USING SUB QUERY EXAMPLE SELECT * FROM F_VAL; 您可以使用子查询示例选择*从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 rows in set (0.01 sec) 一组5列(0.01秒)

IF YOU WANT TO GET ALL RECORD WITH THAT CONDITION 如果您想获得该条件的所有记录

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

IF YOU WANT TO GET ALL RECORD CREATED AFTER THE FIRST ONCE CREATED DATE 如果您想在第一个创建日期之后获取所有记录

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)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM