提问者:小点点

将4个表连接到mysql(获得许多重复值)


我想把4个数据库表连接在一起。 每个表都有共同的studenId字段,所有其他字段都不同。 我想要这样的东西

StudentIdBeginTimeEndTimeAudioTextSentimentBPMLongLatMov

这些字段应根据其他表中的值填写。

这是我试过的代码

USE signals_db;
INSERT INTO trainingTable
SELECT audio.beginTime, audio.endTime, audio.audioText, audio.sentiment,
heartrate.bpm, locations.long, locations.lat,
movements.gravityX, movements.gravityY, movements.gravityZ,
movements.accX, movements.accY, movements.accZ, movements.rotX,
movements.rotY, movements.rotZ,
movements.attRoll, movements.attPitch, movements.attYaw, movements.fallenDown
FROM audio
    INNER JOIN heartrate
    ON audio.studentId = heartrate.studentId
    INNER JOIN locations
    ON audio.studentId = locations.studentId
    INNER JOIN movements
    ON audio.studentId = movements.studentId

使用上面的代码,将在联接的表中创建许多重复的值。 我已经试过几个答案了,但大多数都不起作用。

我希望你能帮帮我。

下面是连接表的图片:


共1个答案

匿名用户

如果确实获得重复行

对于每个重复的行,可以使用DISTINCT来获取单行

SELECT DISTINCT audio.beginTime, audio.endTime, audio.audioText, audio.sentiment,
    heartrate.bpm, locations.long, locations.lat,
    movements.gravityX, movements.gravityY, movements.gravityZ,
    movements.accX, movements.accY, movements.accZ, movements.rotX,
    movements.rotY, movements.rotZ,
    movements.attRoll, movements.attPitch, movements.attYaw, movements.fallenDown
    FROM audio
        INNER JOIN heartrate
        ON audio.studentId = heartrate.studentId
        INNER JOIN locations
        ON audio.studentId = locations.studentId
        INNER JOIN movements
        ON audio.studentId = movements.studentId