Mysql 将两个表中的数据分为两列
我有一张桌子,上面有描述大楼状况的句子。这些句子中有些属于“完成”类,有些属于“准备”类。我还有两个表(complete,preparing),其中包括建筑物ID和句子ID。因此每个建筑物由两个表(complete,preparing)描述。我想创建一个查询,其结果将有两列->建筑物描述Mysql 将两个表中的数据分为两列,mysql,join,subquery,Mysql,Join,Subquery,我有一张桌子,上面有描述大楼状况的句子。这些句子中有些属于“完成”类,有些属于“准备”类。我还有两个表(complete,preparing),其中包括建筑物ID和句子ID。因此每个建筑物由两个表(complete,preparing)描述。我想创建一个查询,其结果将有两列->建筑物描述 ----------- ----------------------- ---------------------- SENTENCES COMPLETE
----------- ----------------------- ----------------------
SENTENCES COMPLETE PREPARING
----------- ----------------------- ----------------------
ID | text ID_HOUSE | ID_SENTENCES ID_HOUSE | ID_SENTENCES
----------- ------------------------ ------------------------
1 | One 1 | 1 1 | 3
2 | Two 1 | 2 2 | 1
3 | Tree 2 | 2
我想要这样的东西:(第一栋)
我创建了这个,但它不起作用
SELECT s.text AS complete,
(
SELECT s.text
FROM sentences AS s
LEFT JOIN preparing AS p ON s.id = p.id_sentences
WHERE s.id_house = 1
) AS preparing
FROM sentences AS s
LEFT JOIN complete AS c ON s.id = c.sentences
WHERE s.id_house = 1
这就是我得到的
1242-子查询返回超过1行
方案
我试图制作一个图表,但不幸的是我没有足够的信誉点上传,所以它隐藏在这里:
没错,由于使用左联接,您将获得多行,在Complete中,您有两个值为1的ID,而left join为您提供了Complete中值为1的所有行。您实际需要的查询是什么,我还不太明白您的查询是指您想要的输出。(还有那里面的外键是什么)你好,外键是ID\u HOUSE和ID\u句子。ID_句子来自表句子,ID_房子来自表房子(这里没有给出)。我想列出包含“句子”数据的两列。这些数据是针对表COMPLETE and PREPARING中指定的单个建筑的。您的命名约定让我有点困惑,s.id_house是否与s.id相同,您能否列出哪些列相互关联,因为在句子中您有id哪个id?ID_house或ID_句子和你的房子表你在哪里使用它。你好,我添加了一个简单的方案,很抱歉描述混乱。
SELECT s.text AS complete,
(
SELECT s.text
FROM sentences AS s
LEFT JOIN preparing AS p ON s.id = p.id_sentences
WHERE s.id_house = 1
) AS preparing
FROM sentences AS s
LEFT JOIN complete AS c ON s.id = c.sentences
WHERE s.id_house = 1