首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从SQL查询中选择要连接的表名

问从SQL查询中选择要连接的表名
EN

Stack Overflow用户
提问于 2015-03-13 12:10:44
回答 1查看 820关注 0票数 0

在当前的数据库设计中,我有一个名为"Leads“的主表和一些以product_开头的表( product_life_insurance,product_medical_insurance,.)

代码语言:javascript
复制
-Leads Table :
--ID
--Product
...

-Product_Life_insurance Table :
--ID
--LeadID
...

领队:

代码语言:javascript
复制
ID 5
Product: life_insurance

一条product_life_insurance街:

代码语言:javascript
复制
ID 1
LeadId 5

。。

是否要创建一个查询,从引号中选择表名,并在其中添加"product_“前缀,然后将其加入到产品表中?

我是说:

代码语言:javascript
复制
SELECT *
FROM `leads` JOIN `product_life_insurance` ON `leads`.`id` = `product_life_insurance`.`leadID`
WHERE `leads`.`id` = '5';

我希望从leads表中选择用于联接的表名,并在其中添加"product_“前缀并在我的查询中使用它。

谢谢:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-13 12:25:06

你问:

是否有任何方法创建查询,从引号中选择表名,并向其添加"product_“前缀,然后将其加入到产品表中?

答案是no。在纯SQL中,不能生成表名的变量,然后在查询中使用它们。当然,您可以在主机php代码中这样做。但是,您需要使用一个查询来获取表名,并使用更多的查询从该表名获取结果。

还可以使用动态SQL。这是一个MySQL特性,允许您在MySQL服务器中动态创建SQL查询的文本,然后运行这些查询。

在我看来,你想要存储几类不同属性的实体(人寿保险、年金、车辆保险等)。

这为您提供了一些模式设计选项。

  1. 您应该使用不同的表(就像您正在做的那样),在主表中显示实体(铅)类(人寿保险),并加入您需要的特定表吗?
  2. 您是否应该尝试将所有属性强制放置到单个实体中,将与特定实体类无关的属性保留为空或空白?
  3. 您应该像WordPress的wp_postmeta表那样为实体使用密钥/值存储吗?

如果对属性值进行大量搜索,则选项3有一个缺点:它要求所有属性都以相同的数据类型存储。该数据类型可能是varchar(n)。这意味着很难搜索数值属性值的范围。例如,'10'被BETWEEN '1' AND '9'视为文本,但这在数字上是无稽之谈。您可以使用隐式类型转换来解决这个问题,但这会使索引的使用失败。那是,

代码语言:javascript
复制
 0+meta_value BETWEEN 0 AND 9 

强制比较在meta_value列上进行数值计算。它能工作,但不快。尽管如此,选项3是迄今为止最灵活的;您可以在不更改表定义的情况下添加新属性。

将最常见的搜索属性值放入主lead表中的选项2和选项3的组合可能会产生最健壮的解决方案。

选项1 --您目前的解决方案--是一个性能噩梦,等待您在最负担不起的时候攻击它:因为您的应用程序正在扩展。

注意:如果您使用的是MariaDB分叉的MySQL,您的key_value表可以包含一个持久的、索引的虚拟列。例如,

代码语言:javascript
复制
meta_key   VARCHAR(255),
meta_value VARCHAR(255), 
meta_value_int BIGINT(20) AS (0+meta_value) PERSISTENT,
meta_value_float FLOAT AS (CAST(meta_value AS DECIMAL(30,10))) PERSISTENT

然后,可以对这些虚拟列(用AS定义)进行索引,并快速搜索它们。不以数字开头的meta_value列将在虚拟列中具有值0。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29031899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档