我的查询返回了很多列

时间:2014-04-14 19:21:12

标签: mysql sql database

我们说我的数据库中有这种结构:

Table Grandparent (Id, Name)
Table Parent (Id, GrandparentId, Name)
Table Child (Id, ParentId, Name)

这不是一个真正的结构,只是理论......(考虑到这个结构可以用1个Person表替换,其中包含parentId,是的,我知道)。当然,让我们假设没有性别......只有祖先和后代,就是这样。

好。所以。让我们说这些表按年龄分类。老人们去祖父母的桌子。中年人去父母餐桌,孩子们去儿童餐桌。

那么如何查询属于一个祖父母的所有孩子?

我试过了:

SELECT * FROM Child
JOIN Parent ON Child.ParentId = Parent.Id
JOIN Grandparent ON Parent.Id = Grandparent.GrandParentId
WHERE Grandparent.GreatGrandParentId = 1;

实际上它可以工作,但会返回很多列(不是行,列)。有点讨厌,但我可以忍受。我很高兴有任何改进。谢谢。

2 个答案:

答案 0 :(得分:1)

您可能只需要Child表中的列,而不是查询中所有表中的所有列。幸运的是,这很容易实现。只需使用Child.*代替*,即可:

SELECT Child.* FROM Child
JOIN Parent ON Child.ParentId = Parent.Id
JOIN Grandparent ON Parent.Id = Grandparent.GreatGrandParentId
WHERE Grandparent.GreatGrandParentId = 1;

答案 1 :(得分:1)

选择*将返回所有表中的所有列。

指定所需的列 - 例如SELECT child.Name FROM ....