Mysql SQL:如何将大量列和大量表中的特定值连接到一个查询中?
我对SQL有点生疏(如果其他地方已经回答了这个问题,我表示歉意,尽管我似乎找不到任何可以解决这个问题的方法),并且在这个问题上被难住了很久。作为前言,我已经研究并了解了各种连接和内部连接等,我了解它们是如何工作的,并且它们似乎在较小的数据量下工作得很好。但是,我的问题是列和表的数量太多,我需要知道是否有更简单的方法将这些数据连接到一个查询中 这就是我所拥有的:Mysql SQL:如何将大量列和大量表中的特定值连接到一个查询中?,mysql,sql,join,Mysql,Sql,Join,我对SQL有点生疏(如果其他地方已经回答了这个问题,我表示歉意,尽管我似乎找不到任何可以解决这个问题的方法),并且在这个问题上被难住了很久。作为前言,我已经研究并了解了各种连接和内部连接等,我了解它们是如何工作的,并且它们似乎在较小的数据量下工作得很好。但是,我的问题是列和表的数量太多,我需要知道是否有更简单的方法将这些数据连接到一个查询中 这就是我所拥有的: $query2 = "SELECT fen_toit,tuiles,zinc,bois,bac_acier FROM phase1 W
$query2 = "SELECT fen_toit,tuiles,zinc,bois,bac_acier FROM phase1 WHERE id IN(3,12,22)";
$query3 = "SELECT fen_toit,tuiles,zinc,bois,bac_acier FROM phase2 WHERE id IN(3,12,22)";
$query4 = "SELECT fen_toit,tuiles,zinc,bois,bac_acier FROM phase3 WHERE id IN(3,12,22)";
$query5 = "SELECT fen_toit,tuiles,zinc,bois,bac_acier FROM phase4 WHERE id IN(3,12,22)";
$query6 = "SELECT fen_toit,tuiles,zinc,bois,bac_acier FROM phase5 WHERE id IN(3,12,22)";
$query7 = "SELECT fen_toit,tuiles,zinc,bois,bac_acier FROM phase6 WHERE id IN(3,12,22)";
$query8 = "SELECT fen_toit,tuiles,zinc,bois,bac_acier FROM phase7 WHERE id IN(3,12,22)";
$query9 = "SELECT fen_toit,tuiles,zinc,bois,bac_acier FROM phase8 WHERE id IN(3,12,22)";
$query10 = "SELECT fen_toit,tuiles,zinc,bois,bac_acier FROM phase9 WHERE id IN(3,12,22)";
$query11 = "SELECT fen_toit,tuiles,zinc,bois,bac_acier FROM phase10 WHERE id IN(3,12,22)";
$query12 = "SELECT fen_toit,tuiles,zinc,bois,bac_acier FROM phase11 WHERE id IN(3,12,22)";
$query13 = "SELECT fen_toit,tuiles,zinc,bois,bac_acier FROM phase12 WHERE id IN(3,12,22)";
我想将这些查询结果合并到一个查询中。我曾尝试在phase1、phase2 e.t、c之间使用简单的逗号分隔,但我遇到了一个不明确的列错误。我理解这是因为我没有补充
phase1.fen_toit
或
等等来选择,因为这看起来太长了
如果有人能帮忙,我将不胜感激。我确信答案就在眼前 使用
UNION
或UNION ALL
加入您的查询,如下所示:
$query2 = "SELECT fen_toit,tuiles,zinc,bois,bac_acier FROM phase1 WHERE id IN(3,12,22)
UNION ALL
SELECT fen_toit,tuiles,zinc,bois,bac_acier FROM phase2 WHERE id IN(3,12,22)
UNION ALL
SELECT fen_toit,tuiles,zinc,bois,bac_acier FROM phase3 WHERE id IN(3,12,22)
UNION ALL
SELECT fen_toit,tuiles,zinc,bois,bac_acier FROM phase4 WHERE id IN(3,12,22)
UNION ALL
SELECT fen_toit,tuiles,zinc,bois,bac_acier FROM phase5 WHERE id IN(3,12,22)
UNION ALL
SELECT fen_toit,tuiles,zinc,bois,bac_acier FROM phase6 WHERE id IN(3,12,22)
UNION ALL
SELECT fen_toit,tuiles,zinc,bois,bac_acier FROM phase7 WHERE id IN(3,12,22)
UNION ALL
SELECT fen_toit,tuiles,zinc,bois,bac_acier FROM phase8 WHERE id IN(3,12,22)
UNION ALL
SELECT fen_toit,tuiles,zinc,bois,bac_acier FROM phase9 WHERE id IN(3,12,22)
UNION ALL
SELECT fen_toit,tuiles,zinc,bois,bac_acier FROM phase10 WHERE id IN(3,12,22)
UNION ALL
SELECT fen_toit,tuiles,zinc,bois,bac_acier FROM phase11 WHERE id IN(3,12,22)
UNION ALL
SELECT fen_toit,tuiles,zinc,bois,bac_acier FROM phase12 WHERE id IN(3,12,22)";
因此,下一步请参见normalization使用
UNION
组合它们。您还可以使用MERGE
存储引擎创建一个表,该表在所有这些表之间自动执行UNION
。
$query2 = "SELECT fen_toit,tuiles,zinc,bois,bac_acier FROM phase1 WHERE id IN(3,12,22)
UNION ALL
SELECT fen_toit,tuiles,zinc,bois,bac_acier FROM phase2 WHERE id IN(3,12,22)
UNION ALL
SELECT fen_toit,tuiles,zinc,bois,bac_acier FROM phase3 WHERE id IN(3,12,22)
UNION ALL
SELECT fen_toit,tuiles,zinc,bois,bac_acier FROM phase4 WHERE id IN(3,12,22)
UNION ALL
SELECT fen_toit,tuiles,zinc,bois,bac_acier FROM phase5 WHERE id IN(3,12,22)
UNION ALL
SELECT fen_toit,tuiles,zinc,bois,bac_acier FROM phase6 WHERE id IN(3,12,22)
UNION ALL
SELECT fen_toit,tuiles,zinc,bois,bac_acier FROM phase7 WHERE id IN(3,12,22)
UNION ALL
SELECT fen_toit,tuiles,zinc,bois,bac_acier FROM phase8 WHERE id IN(3,12,22)
UNION ALL
SELECT fen_toit,tuiles,zinc,bois,bac_acier FROM phase9 WHERE id IN(3,12,22)
UNION ALL
SELECT fen_toit,tuiles,zinc,bois,bac_acier FROM phase10 WHERE id IN(3,12,22)
UNION ALL
SELECT fen_toit,tuiles,zinc,bois,bac_acier FROM phase11 WHERE id IN(3,12,22)
UNION ALL
SELECT fen_toit,tuiles,zinc,bois,bac_acier FROM phase12 WHERE id IN(3,12,22)";