gpt4 book ai didi

mysql - 我可以从 SQL 数组中获得多个外键吗?

转载 作者:行者123 更新时间:2023-11-29 20:50:10 25 4
gpt4 key购买 nike

我有一个充满 id 的数组,并且所有 id 都是外键。我举了一个我的表格的例子。

我的数据库中有存储表,如下所示:

st_id   store_name     tags   
st1 store1 ["t1","t2","t3"]
st2 store2 ["t1","t4"]
st3 store3 ["t3","t5"]

标签表像这样

tag_id   tag_name
t1 tag1
t2 tag2
t3 tag3
t4 tag4
t5 tag5

现在我必须选择所有具有 t1 标签的商店名称,例如:

t1:st1、st2
t2:st1
t3:st1,st3

如何在数组中选择多个外键?感谢您的所有回答。

最佳答案

一些 RDBMS 对数组的支持有限,但据我所知,MySQL 并不是其中之一。

此数据的规范化设计将是使用连接表的多对多设计,如下所示:

store table
st_id store_name
st1 store1
st2 store2
st3 store3

store_tag table
st_id tag_id
st1 t1
st1 t2
st1 t3
st2 t1
st2 t4
st3 t3
st3 t5


tag table
tag_id tag_name
t1 tag1
t2 tag2
t3 tag3
t4 tag4
t5 tag5

然后,您可以对所有带有标签的商店的列表执行此操作:

SELECT s.st_id, GROUP_CONCAT(t.tag_name) AS tags
FROM store s
JOIN store_tag st
ON st.st_id = s.st_id
JOIN tag t
ON t.tag_id = st.tag_id
GROUP BY st_id;

或者,如果您想要具有特定标签名称的所有商店的列表:

SELECT s.st_id
FROM store s
JOIN store_tag st
ON st.st_id = s.st_id
JOIN tag t
ON t.tag_id = st.tag_id
WHERE t.tag_name = 'tag1';

关于mysql - 我可以从 SQL 数组中获得多个外键吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38126236/

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