gpt4 book ai didi

mysql - 如何使用连接从表中检索数据

转载 作者:行者123 更新时间:2023-11-29 01:35:26 25 4
gpt4 key购买 nike

我正在使用 MySQL 5.5。里面有两个表:

DROP TABLE IF EXISTS `events_dictionary`;

CREATE TABLE `events_dictionary` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(64) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `events_dictionary` VALUES (1, 'Light'),(2, 'Switch'),(3, 'on'),(4, 'off');

DROP TABLE IF EXISTS `events_log`;

CREATE TABLE `events_log` (
`log_id` bigint(20) NOT NULL AUTO_INCREMENT,
`event_name_id` int(11) NOT NULL DEFAULT '0',
`event_param1` int(11) DEFAULT NULL,
`event_value1` int(11) DEFAULT NULL,
PRIMARY KEY (`log_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `events_log` VALUES (1, 1, 2, 3),(2, 1, 2, 4);

events_dictionary 包含events_log 事件名称、参数和值 的名称。

所以,我的问题是 - 我如何从 event_log 表中选择数据,其中列 event_name_id、event_param1、event_value1 映射到 nameevents_dictionary 表?

我试着做这个查询:

SELECT name, event_param1, event_value1 
FROM events_log
JOIN events_dictionary ON events_log.event_name_id = events_dictionary.id;

但是,在这种情况下,我只看到 event_name_id 被 events_dictionary 中的值替换,如下所示:

name  | event_param1  | event_value1
Light | 1 | 1
Light | 1 | 2

我也想用 events_dictionary 中的名称替换 event_param1 和 event_value1。

提前致谢!

最佳答案

您需要多次加入events_dictionary

SELECT a.name, b.name, c.name 
FROM events_log
JOIN events_dictionary a ON events_log.event_name_id = a.id
JOIN events_dictionary b ON events_log.event_param1 = b.id
JOIN events_dictionary c ON events_log.event_value1 = c.id;

附言
您的 event_log 示例没有多大帮助,而是插入值 (1,1,2,3),(2,1,2,4) 来打开和关闭灯的开关。
DS

关于mysql - 如何使用连接从表中检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49402950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com