java如何区分从多个表中选择的数据?
我想在16个不同的表中搜索,但我不想重复“从数据库中选择”16次;我觉得这对表现没什么帮助
我正在使用:
query="SELECT * FROM table1, table2,..., table16 WHERE id=?";
对吗?? 我的问题是如何在表的数据之间进行分离
也可能我可以从一个表中得到两个或更多的结果,一个“id”;所以我想知道哪些数据来自哪个表!! . 致以最良好的祝愿
你可以在下面搜索框中键入要查询的问题!
我想在16个不同的表中搜索,但我不想重复“从数据库中选择”16次;我觉得这对表现没什么帮助
我正在使用:
query="SELECT * FROM table1, table2,..., table16 WHERE id=?";
对吗?? 我的问题是如何在表的数据之间进行分离
也可能我可以从一个表中得到两个或更多的结果,一个“id”;所以我想知道哪些数据来自哪个表!! . 致以最良好的祝愿
# 1 楼答案
对于同名字段,必须使用别名列出所有字段,并使用表名作为前缀
例如:
可能需要编写一个很长的查询,但您有生成和粘贴它的解决方案:您可以使用FlySpeed SqlQuery(免费供个人使用)这样做
FlySpeed SqlQuery将为您生成所有别名,并自动为表名添加前缀
# 2 楼答案
稍微澄清一下会有所帮助。如果所有16个表都有相同的字段,并且希望它们位于一个连续列表中,那么可以按照上面的建议使用UNION。另一方面,如果只有几个匹配的字段,并且您想要并排比较每个表的值,那么您需要使用联接,并为表名提供别名,如上所述
但是,看看您提供的代码片段,我猜您要么在构建某种存储过程,要么在用其他语言实现SQL。如果是这种情况,那么将表名加载到数组中,并使用for循环来构建查询,例如下面的psuedo代码:
等等。这在很大程度上取决于你想要做什么,你想要多久做一次,以及变量(比如你正在使用的表或字段)改变的频率
# 3 楼答案
您的查询将不起作用,因为您正试图连接这些多个表,而您要做的是搜索(筛选)这16个表
您可以使用
union all
在单个查询中执行此操作:等等。第二个派生字段
source_table
可用于确定哪个表返回哪个结果