需要帮助才能加入查询条件

时间:2017-04-06 04:28:12

标签: mysql sql sql-server oracle join

我在数据库查询中并不多,我需要一些关于跟踪的帮助。

我有两个表结构如下 table1:

Name    Id1 Id2
Jack    1   1
Jack    1   1
Jack    1   1

表2:

Name    Id1 Id2
Jack     1   1

我使用了基本的连接查询:

select *
from table1 tb1
join table2 tb2 on tb1.id1 = tb2.id1
    and tb2.id2 = tb2.id2

输出我得到:

Jack    1   1
Jack    1   1
Jack    1   1

但我需要以下输出:

杰克1 1

注意:我喜欢在表2结合在一起时显示表2中可用的记录!! ..我想仅使用table2获取数据

提前致谢。

3 个答案:

答案 0 :(得分:1)

以下查询应该有效:

SELECT * FROM TBL2 T2
UNION
SELECT * FROM TBL1 T1;

答案 1 :(得分:1)

请尝试以下方法(不使用别名)...

SELECT table2.Name,
       table2.Id1,
       table2.Id2
FROM table1
JOIN table2 ON table1.id1 = table2.id1 AND
               table1.id2 = table2.id2
GROUP BY table2.id1,
         table2.id2;

或尝试以下(确实使用别名)......

SELECT tb2.Name,
       tb2.Id1,
       tb2.Id2
FROM table1 tb1
JOIN table2 tb2 ON tb1.id1 = tb2.id1 AND
                   tb1.id2 = tb2.id2
GROUP BY tb2.id1,
         tb2.id2;

通过在INNER JOIN上对这些关键字段table2执行table1,您只能将输出限制为table1Id1匹配的行Id2中的table2(注意:JOIN前面没有JOIN类型,INNER JOIN会执行table1。由于GROUP BY中的多行符合此条件,因此您可以使用SELECT delta.input_name, delta.mtcn, delta.at‌​tempt_id FROM compliance.rtra_transactions rtra_txn JOIN compliance.GNR_TEST_RUNS delta ON rtra_txn.mtcn_nr = delta.mtcn AND rtra_txn.attemptid = delta.attempt_id WHERE rtra_txn.year = 2017 AND rtra_txn.month = 2 AND rtra_txn.day = 17 AND rtra_txn.trns_ts BETWEEN '2017-02-17 00:00:00' AND '2017-02-17 23:59:00' AND delta.MATCH_OUTCOME = 'MATCH' AND delta.job_name = 'Feb17_Run_1' AND rtra_txn.txn_map[ 'TRANSACTIONTYPE' ] IN ( '10', '7' ) GROUP BY delta.mtcn, delta.attempt_id;

为每个匹配的条件集将结果限制为仅一行

这应该将提供的实际查询更改为...

*.example.com

如果您有任何问题或意见,请随时发表评论。

答案 2 :(得分:1)

您需要使用{strong> Biswabid 回答评论中提到的select DISTINCT tb2.* from table2 tb2 left join table1 tb1 on tb1.id1 = tb2.id1 and tb1.id2 = tb2.id2 WHERE tb1.id1 IS NULL 我想单独显示表2中可用的记录

{{1}}