gpt4 book ai didi

mysql - 从保存在另一列中的列中选择

转载 作者:行者123 更新时间:2023-11-29 04:45:13 24 4
gpt4 key购买 nike

create tableA (id int(11),col varchar(30) null)

id col
1 NULL
2 NULL
3 other_col_name

现在我想做的是与另一个表进行内部连接。所以当col 为 NULL 那么我将选择 t2.normal_col如果它不为空,则选择在“col”中输入的列。所以在这种情况下,我会选择 t2.other_col_name

这是我尝试过的方法,我知道它只会返回列 t1.col 中的输入,而不是通过它进行选择。

SELECT COALESCE(t1.col, t2.normal_col) AS FROM tableA t1
INNER JOIN table2 ON t1.id= t2.id

你会怎么做?

编辑;

table2
(
int id,
normal_col_name varchar(30) null,
other_col_name varchar(30) null,
another_col varchar(30) null
)

最佳答案

这在正常设计中是做不到的。但是你可以使用 EAV (entity-attribute-value) 设计。在这样的设计中,您的 table2:

id    normal_col_name    other_col_name     another_col 
-------------------------------------------------------
1 a b c
2 d e f

看起来像那样

entity    attribute          value
----------------------------------
1 normal_col_name a
1 other_col_name b
1 another_col_name c
2 onormal_col_name d
2 other_col_name e
2 another_col_name f

当然在这样的设计中查询更复杂,但你想要的其实很简单:

select id, value
from tableA
join EAV on id = entity and attribute = if(col is NULL, 'normal_col', col)

关于mysql - 从保存在另一列中的列中选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20174863/

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