gpt4 book ai didi

MySQL动态连接

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

假设我的数据库中有这些表:

items
categories
weapons
shields
swords

我需要像这样创建一个连接:

SELECT items.*, {swords}.*
FROM items
INNER JOIN categories
ON categories.id = items.category_id # <-- here I know that the item is a sword
INNER JOIN {swords}
ON {swords}.item_id = item.id
WHERE items.id = 12

但是 {swords} 部分是动态的,因为我发现一个项目是 sword checkgin categories.name 字段。

如果 categories.name 是“shield”,查询将更改为:

SELECT items.*, shields.*
FROM items
INNER JOIN categories
ON categories.id = items.category_id
INNER JOIN shields
ON shields.item_id = item.id
WHERE items.id = 13

我在 swords 周围使用了 {} 来像变量一样显示它

谢谢你的回答,对不起我的英语! :)

最佳答案

从技术上讲,您只能使用动态 SQL 执行此操作 - 这意味着 MySQL's Prepared Statement syntax ,或字符串连接以在将查询提交到数据库之前创建查询。准备好的语句是更好的选择,因为它可以更好地防御 SQL 注入(inject)。

您可以对各种表使用 LEFT JOIN,但这意味着包括每个表(武器、盾牌、剑……)中的大量列,如果类别不匹配,这些列将为空。尝试从单个查询中提取数据会很糟糕...

PS:为什么会有SWORD表? WEAPON 表不会涵盖这些内容吗?

关于MySQL动态连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3208863/

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