我的代码现在看起来像这样:
表格如下:
names surnames age gender
adam lokis 12 m
adam lokis 12 m
mikel miles 22 m
sara astin 34 f
它的示例,我不知道表如何结束,因为数据库太大
SELECT DISTINCT
one.names,
two.surnames,
three.age,
four.gender
FROM one,two,three,four
WHERE
four.gender='male'
group by three.age
SQL开发人员正在分析这些行数小时。
我尝试在/*+ no_use_hash_aggregation*/
之前使用DISTINCT
,但仍然不知道如何使其更快。也许好的方法是在表之间使用INNER JOIN
?
编辑:知道了! 我尝试了一个仅包含两个表的示例
SELECT DISTINCT
one.names,
two.surnames,
FROM one INNER JOIN
two ON one.age=two.age
where
four.gender='male'
答案 0 :(得分:1)
似乎您正在进行交叉联接,ı不能指望其他情况。
假设您的第一张桌子有10张 第二张桌子有5 第三表有6条记录。
您的查询返回
10 x 6 x 5个结果。
使用适当的联接
寻找
İnner join
Left outer join
Right outer join
答案 1 :(得分:0)
尝试加入表格,例如
一个内部联接在on.id = two.id上两个 内部连接two.id = three.id ..上的三个,依此类推。
答案 2 :(得分:0)
您在这里对JOINS都拥有权利,INNER JOIN帮助我,在我之前的示例中,此代码有效:
SELECT DISTINCT
one.names,
two.surnames,
FROM one INNER JOIN
two ON one.age=two.age
where
four.gender='male'