1054 - 未知列“XXX”中“的条款”
的SQL语句下面用来工作,几年前,现在不和我得到这个错误信息:1054 - 未知列“XXX”中“的条款”
1054 - 未知列' Promotion_Card_details.Card_id对条款‘
”的’这是我的SQL语句:
SELECT DISTINCT Promotion_Card_details.Card_id,
Promotion_Merchant_details.Merchant_id,
Promotion_details.Promotion_id,
Issuer_details.IssuerName,
Card_details.CCType,
PaymentType_details.PaymentTypeName,
Merchant_details.MerchantName,
PromotionText,
PromotionEndDate
FROM Promotion_details
INNER JOIN Card_details ON (Card_details.Card_id=Promotion_Card_details.Card_id)
INNER JOIN Issuer_details ON (Issuer_details.Issuer_id=Card_details.Issuer_id)
INNER JOIN PaymentType_details ON (PaymentType_details.PaymentType_id=Card_details.PaymentType_id)
INNER JOIN Merchant_details ON (Merchant_details.Merchant_id=Promotion_Merchant_details.Merchant_id)
INNER JOIN Promotion_Merchant_details ON (Promotion_Merchant_details.Promotion_id=Promotion_details.Promotion_id)
INNER JOIN Promotion_Card_details ON (Promotion_details.Promotion_id=Promotion_Card_details.Promotion_id)
WHERE ((Promotion_details.Promotion_id = '13' OR Promotion_details.Promotion_id = '14'
OR
Promotion_details.Promotion_id = '15' OR Promotion_details.Promotion_id = '16' OR
Promotion_details.Promotion_id = '17' OR Promotion_details.Promotion_id = '18' OR
Promotion_details.Promotion_id = '19' OR Promotion_details.Promotion_id = '20' OR
Promotion_details.Promotion_id = '21' OR Promotion_details.Promotion_id = '22' OR
Promotion_details.Promotion_id = '23' OR Promotion_details.Promotion_id = '24' OR
Promotion_details.Promotion_id = '25' OR Promotion_details.Promotion_id = '361'
OR Promotion_details.Promotion_id = '364' OR Promotion_details.Promotion_id = '382'))
任何帮助将不胜感激,因为我已经试过周围的某些部分括号,但它仍然有不修复。
JOIN
s是左关联的,所以给定的ON
子句只能引用已经提到的表。因此,这些重新排序:
FROM Promotion_details
INNER JOIN Card_details ON (Card_details.Card_id=Promotion_Card_details.Card_id)
INNER JOIN Issuer_details ON (Issuer_details.Issuer_id=Card_details.Issuer_id)
INNER JOIN PaymentType_details ON (PaymentType_details.PaymentType_id=Card_details.PaymentType_id)
INNER JOIN Merchant_details ON (Merchant_details.Merchant_id=Promotion_Merchant_details.Merchant_id)
INNER JOIN Promotion_Merchant_details ON (Promotion_Merchant_details.Promotion_id=Promotion_details.Promotion_id)
INNER JOIN Promotion_Card_details ON (Promotion_details.Promotion_id=Promotion_Card_details.Promotion_id)
这个顺序:
FROM Promotion_details
INNER JOIN Promotion_Card_details ON (Promotion_details.Promotion_id=Promotion_Card_details.Promotion_id)
INNER JOIN Card_details ON (Card_details.Card_id=Promotion_Card_details.Card_id)
INNER JOIN Issuer_details ON (Issuer_details.Issuer_id=Card_details.Issuer_id)
INNER JOIN PaymentType_details ON (PaymentType_details.PaymentType_id=Card_details.PaymentType_id)
INNER JOIN Promotion_Merchant_details ON (Promotion_Merchant_details.Promotion_id=Promotion_details.Promotion_id)
INNER JOIN Merchant_details ON (Merchant_details.Merchant_id=Promotion_Merchant_details.Merchant_id)
谢谢我试过了。无论我如何重新排列所有INNER JOIN语句,第一个INNER JOIN将始终给出错误#1054 - 'on子句'中的未知列'XXX' – James 2012-02-10 15:58:33
@James:啊,我没注意到还有其他错误的依赖关系。但它仍然是同样的问题。我已经更新了我的答案。 – ruakh 2012-02-10 15:59:33
对不起,我发现上面我的SQL语句中有一个输入错误,我认为我放在那里替换的错误现在是正确的,它会抛出'on子句'#1054 - 未知列'Promotion_Card_details.Card_id' – James 2012-02-10 16:05:48
你可以发布你的表的DESC? – 2012-02-10 15:50:59
有人重新命名或删除了“Promotion_Card_details”表中的字段吗? – Crontab 2012-02-10 15:54:25
此外,它会使查询变得更具可读性,可以将您的'WHERE'子句更改为使用'IN'而不是'OR'的长列表。 – Crontab 2012-02-10 15:55:10