我有三张桌子 -
TableA 元数据:
idA(PK) descA idB
TableB 元数据:
idB(PK) assetidC
TableC 元数据:
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 ,无论它选择哪种descC!
idA descC
1 "I test Java"
2 "I test Java"
3 "I test Java"
4 "I test Software"
我应该在查询中添加什么内容?
答案 0 :(得分:2)
在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包含这些列的任意值。这似乎正是你想要的。通常情况下,我觉得这个功能比有用更令人困惑。请注意,该列任意而非随机。您可能会为所有列获得相同的值。