gpt4 book ai didi

mysql - 有条件地选择表格的某些部分

转载 作者:行者123 更新时间:2023-11-30 22:03:57 25 4
gpt4 key购买 nike

我正在尝试有条件地选择表格中的某些列。
我的表的结构可能看起来很奇怪,但我对此没有影响:

| id |    col1|1    |    col2|1    |    col1|2    |    col2|2    |    col1|3    |    col2|3    |
|:--:|:------------:|:------------:|:------------:|:------------:|:------------:|:------------:|
| 1 | some | meaningless | text | don't | mind | me |
| 2 | abc | def | NULL | NULL | my | text |
| 3 | dummytext... | dummytext... | dummytext... | dummytext... | dummytext... | dummytext... |

此表分为 3 个部分,最后用 |X 标记。

  1. col1|1col2|1
  2. col1|2col2|2
  3. col1|3col2|3

我只想要每个部分,如果该部分的 col2 IS NOT NULL


这是我的方法:

SELECT t1.`col1|1`, t1.`col2|1`, t2.`col1|2`, t2.`col2|2`, t3.`col1|3`, t3.`col2|3`
FROM tab1 t1
LEFT JOIN tab1 t2 On t1.`id` = t2.`id`
LEFT JOIN tab1 t3 on t1.`id` = t3.`id`
WHERE
t1.`col2|1` IS NOT NULL
AND t2.`col2|2` IS NOT NULL # this column is NULL, so I don't want it (including table t2)
AND t3.`col2|3` IS NOT NULL
AND t1.`id` = 2
AND t2.`id` = 2
AND t3.`id` = 2

如果仅当所有 col2 都为 NOT NULL 时才有效,但如果其中 1 个 IS NULL,则整个结果为空。

如果您替换我的示例表中的两个 NULL 值,您将获得所有 6 列,这是正确的,因为在此表中没有任何部分是 NULL案例。


在我的例子中,我想要输出:

| col1|1 | col2|1 | col1|3 | col2|3 |
|:------:|:------:|:------:|:------:|
| abc | def | my | text |

Here is a fiddle .

最佳答案

我修改了你的代码:

SELECT t1.`col1|1`, t1.`col2|1`, t2.`col1|2`, t2.`col2|2`, t3.`col1|3`, t3.`col2|3`
FROM
tab1 t
LEFT JOIN tab1 t1 On t.`id` = t1.`id` AND t1.`col2|1` IS NOT NULL
LEFT JOIN tab1 t2 On t.`id` = t2.`id` AND t2.`col2|2` IS NOT NULL
LEFT JOIN tab1 t3 on t.`id` = t3.`id` AND t3.`col2|3` IS NOT NULL
WHERE
t.`id` = 2

实现了描述的逻辑,但不排除NULL列,查询结果:

+----+--------+--------+--------+--------+--------+--------+
| | col1|1 | col2|1 | col1|2 | col2|2 | col1|3 | col2|3 |
+----+--------+--------+--------+--------+--------+--------+
| 1 | abc | def | NULL | NULL | my | text |
+----+--------+--------+--------+--------+--------+--------+

关于mysql - 有条件地选择表格的某些部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42389036/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com