上的未知列我有两个查询运行在同一个表上,除了第二个失败并添加了一个左连接。左连接失败,在条款
成功运行
SELECT *
FROM paypal_ipn_orders
LEFT join itemkey on paypal_ipn_orders.item_number = itemkey.item_id
WHERE packing_slip_printed = 0
AND LOWER(payment_status) = 'completed'
AND address_name <> ''
order by itemkey.sort_id;
然而,这第二个查询用“‘关于条款’在未知列‘paypal_ipn_orders.item_number’”失败,但它运行良好与开出左侧加入。 Paypal_ipn_orders表包含item_number字段。
SELECT *
FROM paypal_ipn_orders as table1,
(SELECT payer_email, COUNT(*) as count FROM paypal_ipn_orders GROUP BY payer_email ORDER BY count DESC) as table2
LEFT join itemkey on table1.item_number = itemkey.item_id
WHERE table1.payer_email = table2.payer_email
and packing_slip_printed = 0
AND LOWER(payment_status) = 'completed'
AND address_name <> ''
ORDER BY count DESC, auction_multi_item, item_number;
表1后的逗号是必需的,因为(SELECT ...是FROM子句的一部分
一个有趣的注意,我改变的顺序FROM子句:。
SELECT *
FROM (SELECT payer_email, COUNT(*) as count FROM paypal_ipn_orders GROUP BY payer_email ORDER BY count DESC) as table1,
paypal_ipn_orders as table12
LEFT join itemkey on table2.item_number = itemkey.item_id
WHERE table2.payer_email = table1.payer_email
and packing_slip_printed = 0
AND LOWER(payment_status) = 'completed'
AND address_name <> ''
ORDER BY count DESC, auction_multi_item, item_number;
现在的错误信息是:'where clause'中的未知列'table2.payer_email'。但是这将不会在左连接外运行。给出where子句消息中的同一未知列。
仅供参考 - 这工作:
SELECT payer_email, COUNT(*) as count
FROM paypal_ipn_orders
WHERE packing_slip_printed = 0
AND LOWER(payment_status) = 'completed'
AND address_name <> ''
GROUP BY payer_email
ORDER BY count DESC;
对不起,它无法同我们没有“‘为’表1”我也曾尝试表名“paypal_ipn_orders”具有相同的结果。 – 2013-02-24 13:30:58
好的,如果您仍然遇到问题,我会稍后再仔细研究。 – 2013-02-24 17:15:20
谢谢约翰,对我来说这仍然是一个神秘的东西。 – 2013-02-24 17:56:21