2017-08-05 37 views
-1

根据@scaisEdge发布的解决方案here。我有一个与“内连接”有关的进一步问题。我试着用'pid'值加入它们。但是SQL表示 '未知'如何使用伪值内部加入表格

这是他的代码:

SELECT SUBSTRING(`page_url`,-3) as pid 
    from `prop_log` 
    WHERE `page_url` REGEXP '[0-9]' 
    group by SUBSTRING(`page_url`,-3) 
    order by count(*) 

这是我的:

SELECT prop_sid,SUBSTRING(`page_url`,-3) as pid 
from `prop_log` 
inner join prop_db2 on prop_db2.prop_id=pid 
WHERE `page_url` REGEXP '[0-9]' 
group by SUBSTRING(`page_url`,-3) 
order by count(*) desc 
limit 5 

PS。 prop_sid是prop_db2

+0

我已经发布了一些人建议过一个aswer ..希望你在寻找什么 – scaisEdge

回答

0

你不能在一个地方(或)条件中使用别名

SELECT prop_sid,SUBSTRING(`page_url`,-3) as pid 
from `prop_log` 
inner join prop_db2 on prop_db2.prop_id=SUBSTRING(`page_url`,-3) 
WHERE `page_url` REGEXP '[0-9]' 
group by SUBSTRING(`page_url`,-3) 
order by count(*) desc 
limit 5 

使用别名,才能被允许通过,并在组一些MySQL版本通过,但不在那里..

,你也应该

SELECT min(prop_sid),SUBSTRING(`page_url`,-3) as pid 
from `prop_log` 
inner join prop_db2 on prop_db2.prop_id=SUBSTRING(`page_url`,-3) 
WHERE `page_url` REGEXP '[0-9]' 
group by SUBSTRING(`page_url`,-3) 
order by count(*) desc 
limit 5 

使用的列(假)聚合函数不在组或列添加到GROUP BY是是一致的与查询

SELECT prop_sid,SUBSTRING(`page_url`,-3) as pid 
from `prop_log` 
inner join prop_db2 on prop_db2.prop_id=SUBSTRING(`page_url`,-3) 
WHERE `page_url` REGEXP '[0-9]' 
group by SUBSTRING(`page_url`,-3), prop_sid 
order by count(*) desc 
limit 5 
+0

非常感谢您...... – Wilf

0
SELECT prop_sid, prop_db2.prop_id as pid 
from `prop_log` 
inner join prop_db2 on prop_db2.prop_id=SUBSTRING(`page_url`,-3) 
WHERE `page_url` REGEXP '[0-9]' 
group by prop_db2.prop_id 
order by count(*) desc 
limit 5