我有三个表-
表A元数据:
idA(PK) descA idB
表B元数据:
idB(PK) assetidC
表C元数据:
assetidC(PK) descC
这是一种一对多关系
以下选择查询-
select distinct A.idA, C.descC
from tableA A, tableB B, tableC C
where C.descC like '%test%'
and C.assetidC = B.assetidC
and B.idB = A.idB
返回类似-的结果
idA descC
1 "I test Java"
1 "I test Oracle"
1 "I test Windows"
1 "I test Software"
2 "I test Java"
2 "I test Oracle"
2 "I test Windows"
3 "I test Java"
3 "I test Oracle"
4 "I test Windows"
4 "I test Software"
我想要的是-无论它选择哪种描述,都要有不同的idAs
idA descC
1 "I test Java"
2 "I test Java"
3 "I test Java"
4 "I test Software"
我应该向查询中添加什么?
在MySQL中,可以使用group by
而不是distinct
:
select A.idA, C.descC
from tableA A, tableB B, tableC C
where C.descC like '%test%'
and C.assetidC = B.assetidC
and B.idB = A.idB
group by A.idA;
这恰好使用了MySQL的一个称为隐藏列的功能,其中select
中的列不在group by
中。MySQL为这些列包含一个任意值。这似乎正是你想要的。通常情况下,我觉得这个功能更令人困惑,而不是有用。请注意,该列是任意,而不是随机。您可能会为所有列获得相同的值。