[英]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.