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


标头显示,但显示的数据重叠

我已经检查了类似的问题,但似乎无法解决该问题。

最佳答案

您有重复的列,因为,您要向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;

10-07 13:20