我正在尝试向现有查询添加行数,但出现错误
“on 子句”中的未知列“pl.GroupNumber”
我显然也会回答这个问题,以防它帮助其他人,因为在这里写完所有这些之后,我想到将 FROM 反转为:
*FROM (SELECT @row_number:=0) AS t,parts_listing pl *
这似乎成功了!不太明白为什么它有效,但它确实有效。
SELECT DISTINCT
(@row_number:=@row_number + 1) AS RowNum,
pl.ID,
pn.ID AS SubID,
IF(ListType,(SELECT MAX(ID) FROM parts_notes
WHERE PageNo=429
AND ListType IS NOT NULL AND SubPage IS NULL AND
(BasePart IS NOT NULL AND Models IS NOT NULL
AND (BasePart=pl.PartNo
AND pl.Models LIKE CONCAT('%', Models ,'%')))
OR (BasePart IS NOT NULL AND Models IS NULL
AND BasePart=pl.PartNo) ),NULL) AS SubMax,
ListType,
IndentText,
BaseGroup,
BaseName,
GroupName,
Title,
`Name`,
pl.Models,
pl.PartNo,
pn.PartNo AS SubPartNo,
pl.Quantity,
pn.Quantity AS SubQuantity,
pn.Description AS SubDescription,
ListType,
Column_1,
Column_2,
Column_3,
Column_4,
Column_5,
Column_6,
Column_7,
Column_8,
COALESCE(pl.GroupNumber, pn.GroupNo) AS GroupNo,
COALESCE(pl.Description, pn.Description) AS Description,
COALESCE(pl.PageNo, pn.PageNo) AS PageNo,
COALESCE(pl.SubPage, pn.SubPage) AS SubPage,
COALESCE(pl.RevDate, pn.RevDate) AS RevDate,
COALESCE(pl.Edition, pn.Edition) AS Edition
FROM parts_listing pl, (SELECT @row_number:=0) AS t
LEFT JOIN parts_notes pn ON pl.GroupNumber=pn.GroupNo
AND ((ListType < 5 AND (pl.PartNo=BasePart AND BasePart IS NOT NULL) OR BasePart IS NULL)
OR ((ListType > 4) AND (pl.GroupNumber=pn.GroupNo OR pl.PartNo=BasePart)))
WHERE BaseGroup=30 AND pl.PageNo=429 AND (pl.SubPage IS NULL
AND pn.SubPage IS NULL)
AND (pl.PageNo = pn.PageNo OR pn.PageNo IS NULL)
AND (pl.SubPage = pn.SubPage OR pn.SubPage IS NULL)
ORDER BY pl.ID, pn.ID
LIMIT 150;