【问题标题】:Can't use alias in subquery不能在子查询中使用别名
【发布时间】:2013-04-04 03:46:23
【问题描述】:

您好,我使用两个表来进行一个查询。 我在 home_tbl 中有自治市和 barangay 和 home_connector_id 字段 但在第二个表中,即 tbl_household_member 只有一个 home_connector_id 字段。 用于子查询的第一个选择的别名不起作用。请帮忙。

这里是查询:

SELECT household_connector_id as h_id,
       barangay as b,
       municipality as m,

(SELECT COUNT(*) FROM household_tbl WHERE municipality = m
AND SUBSTR(expiry_date,1,2) LIKE "04" AND SUBSTR(expiry_date,7,4) LIKE "2013" AND NOT(expiry_date = "") AND NOT(expiry_date = "n/a"))   
+

(SELECT COUNT(*) FROM tbl_household_members WHERE household_connector_id = h_id
AND SUBSTR(expiry_date,1,2) LIKE "04" AND SUBSTR(expiry_date,7,4) LIKE "2013" AND NOT(expiry_date = "") AND NOT(expiry_date = "n/a")) as total

FROM (SELECT DISTINCT * FROM household_tbl) AS TI GROUP BY b

【问题讨论】:

  • “不工作”从不足以说明问题。

标签: php mysql subquery alias


【解决方案1】:

您不能引用分配给另一列的别名,因此您需要引用列名:

SELECT household_connector_id as h_id,
  barangay as b,
  municipality as m,
  (SELECT COUNT(*) 
   FROM household_tbl t
   WHERE t.municipality = TI.municipality  -- changed to column name
    AND SUBSTR(t.expiry_date,1,2) LIKE "04" 
     AND SUBSTR(t.expiry_date,7,4) LIKE "2013" 
     AND NOT(t.expiry_date = "") 
     AND NOT(t.expiry_date = "n/a")) +
  (SELECT COUNT(*) 
   FROM tbl_household_members h
   WHERE h.household_connector_id = TI.household_connector_id   -- changed to column name
    AND SUBSTR(h.expiry_date,1,2) LIKE "04" 
     AND SUBSTR(h.expiry_date,7,4) LIKE "2013" 
     AND NOT(h.expiry_date = "") 
     AND NOT(h.expiry_date = "n/a")) as total
FROM 
(
  SELECT DISTINCT * 
  FROM household_tbl
) AS TI 
GROUP BY barangay

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-08
    • 1970-01-01
    相关资源
    最近更新 更多