我总是使用 JOINS 将主表的主键上的两个表链接到第二个表的外键。在这个示例数据库 books
中有 2 个表:
CREATE TABLE IF NOT EXISTS `classics` (
`isbn` char(13) NOT NULL,
`author` varchar(128) NOT NULL,
`title` varchar(128) NOT NULL,
`category` varchar(16) DEFAULT NULL,
`year` char(4) NOT NULL,
PRIMARY KEY (`isbn`),
FULLTEXT KEY `author` (`author`,`title`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
CREATE TABLE IF NOT EXISTS `customers` (
`name` varchar(128) DEFAULT NULL,
`isbn` char(13) NOT NULL DEFAULT '',
PRIMARY KEY (`isbn`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
我经常做类似这样的查询:
name isbn isbn author title category year
(row 1 values ...)
(row 2 ...)
(row 3 ...)
问题是 isbn 字段重复了。我如何做 SELECT * JOIN 查询只返回唯一字段而不求助于显式标识列 返回?
最佳答案
专业提示:避免在软件中使用 SELECT *,除非你有充分的理由使用它。
您已经观察到这样做的一个原因:JOIN 操作中的重复列问题。
其他原因:
如果您在请求中枚举列,则可以控制这些列在结果集中的显示顺序。
有人可以在您的表格中添加列,而无需更改您的软件。
检索不需要的列会减慢查询速度,有时会减慢很多。
关于mysql - SELECT * JOIN ON 主键 = 外键操作中的重复列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23507625/