[英]Is there any problem in using same field names in different tables then make joint query?
我有多个共享相同字段名称和类型的表。 这些表除了名称外完全相同: table1
和table2
。 我将SHOW CREATE TABLE table1
:
CREATE TABLE `table_!` (
`ip` varchar(500) NOT NULL,
`description` varchar(500) DEFAULT NULL,
`type` varchar(500) DEFAULT NULL,
PRIMARY KEY (`ip`),
UNIQUE KEY `ip_UNIQUE` (`ip`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
我确实会像这样进行联合查询(尽管联合语法很旧,但是我在整个项目中一直在使用它,所以我现在不喜欢做更改):
SELECT COUNT(`table2`.`ip`)
FROM `ips`.`table2`, `ips`.`table1`
WHERE `table2`.`ip` = `table1`.`ip`
AND (LOWER(`table1`.`description`) NOT LIKE 'str1%'
AND (LOWER(`tabl1`.`description`) LIKE '%-str2-%'
OR LOWER(`table1`.`description`) LIKE '%-str3-%'
)
)
AND (LOWER(`table2`.`description`) LIKE 'str1%'
AND LOWER(`table2`.`description`) NOT LIKE '%-str2-%'
AND LOWER(`table2`.`description`) NOT LIKE '%-str3-%'
);
在这种情况下是否有任何错误或应该采取的预防措施?
到目前为止,我没有看到任何问题。 除了一次我在这样的FROM
语句中错误地将第三个表名table3
(也是table3
与table1
和table2
相似)。
FROM table1, table2, table3
尽管我将其包含在FROM中,但是没有使用它,也没有建立联合关系。 刚刚加入了table1
和table2
。
与从FROM语句中删除table3
时得到的结果不同。
您可以(并且通常会在不同的表中使用)相同的列名。 您应该使用短别名来使引用更清晰:
SELECT count(b.ip)
FROM ips.table1 a, ips.table2 b
WHERE a.ip = b.ip
-- ...
当您添加另一个表table3时,输出将有所不同,因为您刚刚向数据集添加了另一个维度。 您还应该将此表连接到特定的列,但是同样,除非一对一,否则您将返回不同数量的行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.