我在数据库查询中并不多,我需要一些关于跟踪的帮助。
我有两个表结构如下 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获取数据
提前致谢。
答案 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
,您只能将输出限制为table1
与Id1
匹配的行Id2
中的table2
(注意:JOIN
前面没有JOIN
类型,INNER JOIN
会执行table1
。由于GROUP BY
中的多行符合此条件,因此您可以使用SELECT delta.input_name,
delta.mtcn,
delta.attempt_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}}