加入两个表来打印选择性数据。

时间:2013-12-11 19:47:29

标签: mysql sql

我有三张桌子 -

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"

我应该在查询中添加什么内容?

1 个答案:

答案 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包含这些列的任意值。这似乎正是你想要的。通常情况下,我觉得这个功能比有用更令人困惑。请注意,该列任意而非随机。您可能会为所有列获得相同的值。