我已经使用 SQL 多年,但从未真正发挥它的潜力。
对于这个例子,假设我有两个表:
CREATE TABLE messages (
MessageID INTEGER NOT NULL PRIMARY KEY,
UserID INTEGER,
Timestamp INTEGER,
Msg TEXT);
CREATE TABLE users (
UserID INTEGER NOT NULL PRIMARY KEY,
UserName TEXT,
Age INTEGER,
Gender INTEGER,
WebURL TEXT);
据我了解,PRIMARY KEY
基本上是对该字段进行索引,以便以后可以将其用作快速搜索 - 即使在巨大的表中,基于主键的确切值进行查询也会非常快速地获得结果。(这也强制每个记录中的字段必须是唯一的。)
在我目前的工作流程中,我会做类似的事情
SELECT * FROM messages;
然后在代码中,对于每条消息,执行:
SELECT * FROM users WHERE UserID = results['UserID'];
这显然听起来效率很低,我知道它可以做得更好。
我想要结束的是一个包含所有字段的结果集messages
,除了 UserID 字段,它包含users
表中与给定 UserID 匹配的所有字段。
有人可以给我一个关于如何完成这种事情的快速入门吗?
如果重要的话,我使用 SQLite3 作为 SQL 引擎,但我也可能想在 MySQL 上执行此操作。
谢谢!