0

我有一个对我来说似乎很基本的问题,但找不到答案。我有两个表:A 和 B。表 A 有一个带有 id-s (int) 的列,表 B 将这些 id-s 与描述 (varchar) 连接起来。我想对表 A 进行查询,并在其中替换 id -s 与表 B 中的描述(一对一关系)。我目前有这个查询:

select tableA.* from tableA join tableB on (tableA.id=tableB.description);

这应该可以完成工作,除了我收到警告 1292:“截断不正确的 DOUBLE 值”。

我明白这意味着什么,这两种数据类型不匹配。但是如何使它工作呢?我确信这一定是一个简单的修复,并且我所要求的一直在使用(例如用书名替换 ISBN 等)......

任何帮助将非常感激!

根据要求编辑

对不起,我认为这不是模棱两可的...... Db结构:

mysql> describe tasks;
+----------+-----------------------+------+-----+---------+----------------+
| Field    | Type                  | Null | Key | Default | Extra          |
+----------+-----------------------+------+-----+---------+----------------+
| tid      | int(10) unsigned      | NO   | PRI | NULL    | auto_increment |
| pid      | int(10) unsigned      | YES  |     | NULL    |                |
| username | varchar(15)           | YES  |     | NULL    |                |
| task     | varchar(1000)         | NO   |     | NULL    |                |
+----------+-----------------------+------+-----+---------+----------------+
8 rows in set (0.00 sec)

mysql> describe projects;
+-------+------------------+------+-----+---------+----------------+
| Field | Type             | Null | Key | Default | Extra          |
+-------+------------------+------+-----+---------+----------------+
| pid   | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| title | varchar(200)     | YES  |     | NULL    |                |
+-------+------------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)

我想“从任务中选择 *”,其中每个 pid 都替换为同一查询中表项目中的相应标题。

希望现在更清楚...

4

1 回答 1

0

您可以简单地使用以下查询来连接两个表的内容,从任务表中获取所有条目,即使它们没有附加项目:

SELECT t.tid, t.username, t.task, p.title 
FROM tasks t 
LEFT JOIN projects p ON t.pid = p.pid;

如果您只想要带有附加项目的任务,请改用此查询:

SELECT t.tid, t.username, t.task, p.title 
FROM tasks t 
JOIN projects p ON t.pid = p.pid;
于 2016-01-22T15:22:20.880 回答