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上,请不要误用;我在编辑中删除了它。