MySQL-删除查询后的冗余字段

MySQL-删除查询后的冗余字段,mysql,Mysql,我正在对多联接表执行查询: SELECT TableA.*, TableB.Data as Data_B, TableC.Data as Data_C, TableD.Data as Data_D, TableE.* FROM TableA JOIN TableB ON TableB.ID = TableA.ID

我正在对多联接表执行查询:

SELECT  TableA.*,
        TableB.Data             as Data_B,
        TableC.Data             as Data_C,
        TableD.Data             as Data_D,
        TableE.*
FROM TableA     JOIN TableB         ON TableB.ID = TableA.ID
                JOIN TableC         ON TableC.ID = TableB.ID
                JOIN TableD         ON TableD.ID = TableC.ID
                JOIN TableE         ON TableE.ID = TableA.ID
WHERE DataToFind = '$SubmittedData'
它工作得很好,但由于TableA是主表,TableE是一个通过键ID与TableA关联的多个子表,所以当我在TableA字段上执行搜索时,我会得到与TableE记录一样多的TableA的冗余行

因为我只想在执行搜索后进行区分,所以我的理想查询应该是:

SELECT DISTINCT ID FROM
(
SELECT  TableA.*,
        TableB.Data             as Data_B,
        TableC.Data             as Data_C,
        TableD.Data             as Data_D,
        TableE.*
FROM TableA     JOIN TableB         ON TableB.ID = TableA.ID
                JOIN TableC         ON TableC.ID = TableB.ID
                JOIN TableD         ON TableD.ID = TableC.ID
                JOIN TableE         ON TableE.ID = TableA.ID
WHERE DataToFind = '$SubmittedData'
)
WHERE ID IS NOT NULL
但它不工作,因为我得到了意外的令牌和其他语法错误

你能帮我找到它的正确格式吗


p、 我不在乎是否丢失了一些表格记录,因为我可以在需要时使用找到的ID恢复它们。

您的查询很好。它只是缺少子查询的表别名,如

SELECT DISTINCT ID FROM
(
    SELECT  tableA.*,
            TableB.Data             as Data_B,
            TableC.Data             as Data_C,
            TableD.Data             as Data_D
            TableE.*
    FROM tableA     JOIN tableB         ON tableB.ID = tableA.ID
                    JOIN tableC         ON tableC.ID = tableB.ID
                    JOIN tableD         ON tableD.ID = tableC.ID
                    JOIN tableE         ON tableE.ID = tableA.ID
    WHERE DataToFound = '$SubmittedData'
) xxx            <-- missing
WHERE ProcedureID IS NOT NULL

如果需要不同的ID,请将所有ID放在一个select语句中:

SELECT DISTINCT TableA.ID
FROM TableA JOIN
     TableB
     ON TableB.ID = TableA.ID JOIN
     TableC
     ON TableC.ID = TableB.ID JOIN
     TableD
     ON TableD.ID = TableC.ID JOIN
     TableE
     ON TableE.ID = TableA.ID
WHERE DataToFind = '$SubmittedData';

您的版本有问题,因为子查询中有两列名为ID。这将产生另一个错误。

与php的关系是什么?这里只有mysql和一个我们不知道如何/在哪里分配的变量。这个问题与PHP无关,它只是一个随机变量。重点应该放在MySQL上,请不要误用;我在编辑中删除了它。