SELECT
dealing_record.*
,shares.*
,transaction_type.*
FROM
shares
INNER JOIN shares ON shares.share_ID = dealing_record.share_id
INNER JOIN transaction_type ON transaction_type.transaction_type_id = dealing_record.transaction_type_id;
上面的SQL代码会生成所需的输出,但会有一些重复的列。此外,列标题显示不完整。当我改变
linesize 100
标题显示但数据显示重叠 p>
我已经检查了类似的问题,但我似乎没有得到如何解决这个问题。
答案 0 :(得分:9)
您有重复的列,因为,您要求SQL引擎提供相同数据的列(使用SELECT dealing_record.*
等),然后重复。
例如,transaction_type.transaction_type_id
列和dealing_record.transaction_type_id
列将具有匹配的行(否则您将看不到任何带有INNER JOIN
的内容),您将看到这些重复项。
如果你想避免这个问题,或者至少要减少结果中重复的风险,请改善你的查询,只使用你真正需要的列,正如@ConradFrix已经说过的那样。一个例子就是:
SELECT
dealing_record.Name
,shares.ID
,shares.Name
,transaction_type.Name
,transaction_type.ID
FROM
shares
INNER JOIN shares ON shares.share_ID = dealing_record.share_id
INNER JOIN transaction_type ON transaction_type.transaction_type_id = dealing_record.transaction_type_id;
答案 1 :(得分:1)
尝试使用dealing_record加入共享,而不是再次共享:
select dealing_record.*,
shares.*,
transaction_type.*
FROM shares inner join dealing_record on shares.share_ID = dealing_record.share_id
inner join transaction_type on transaction_type.transaction_type_id=
dealing_record.transaction_type_id;