2011-04-25 74 views
0
SELECT SUBSTRING(m.own,3,4) as c , (select amphur.AMPHUR_NAME where c = SUBSTRING(m.own,3,4) ), 
     COUNT(*) AS cnt 
    FROM MEMBER AS m 

    GROUP BY SUBSTRING(m.own,3,4) 
order by cnt desc 

SQL语句的MySQL 什么毛病下面的代码,当我填写SQL语句的MySQL notcorrect

(select amphur.AMPHUR_NAME where c = SUBSTRING(m.own,3,4) ) 

它错误

CREATE TABLE IF NOT EXISTS `member` (
    `idmember` int(11) NOT NULL AUTO_INCREMENT, 
    `own` varchar(255) DEFAULT NULL, 
    `Sname` varchar(255) DEFAULT NULL, 
    `Ssurname` varchar(255) DEFAULT NULL, 
    `Sex` enum('¿','¿') NOT NULL, 
    `Hno` varchar(255) DEFAULT NULL, 
    `Moo` varchar(255) DEFAULT NULL, 
    `tambol` varchar(200) NOT NULL, 
    `dateofbirth` date DEFAULT NULL, 
    `migratedate` date DEFAULT NULL, 
    `status` enum('5','4','3','2','1') DEFAULT '5', 
    `Unit` int(4) DEFAULT NULL, 
    `staff1` int(11) DEFAULT NULL, 
    `staff2` int(11) DEFAULT NULL, 
    `fathercode` varchar(30) NOT NULL, 
    `mathercode` varchar(30) NOT NULL, 
    PRIMARY KEY (`idmember`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=8994 ; 


CREATE TABLE IF NOT EXISTS `amphur` (
    `AMPHUR_ID` int(5) NOT NULL AUTO_INCREMENT, 
    `AMPHUR_CODE` varchar(4) COLLATE utf8_unicode_ci NOT NULL, 
    `AMPHUR_NAME` varchar(150) COLLATE utf8_unicode_ci NOT NULL, 
    `GEO_ID` int(5) NOT NULL DEFAULT '0', 
    `PROVINCE_ID` int(5) NOT NULL DEFAULT '0', 
    `province_name` varchar(80) COLLATE utf8_unicode_ci DEFAULT NULL, 
    PRIMARY KEY (`AMPHUR_ID`), 
    KEY `province_name` (`province_name`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=999 ; 
+0

而错误是? – 2011-04-25 15:27:36

回答

0

不能在同一水平线上使用别名。

即使可以,您也可以在子查询中的非关联列上进行筛选:如果存在一条记录,子查询将仅从amphur返回记录;如果存在更多记录,则返回错误。

您能否提供一些示例数据和所需的记录集?

1

你的子查询中缺少FROM子句:

SELECT SUBSTRING(m.own,3,4) as c 
    , (select amphur.AMPHUR_NAME 
     From amphur 
     Where ??? = SUBSTRING(m.own,3,4)) 
    , COUNT(*) AS cnt 
FROM MEMBER AS m 

但是,ho w amphur表与member表相关吗?

0

没有“FROM”子句中你选择Amphur.amphur_name