我有这个查询,将firstname与姓氏连接起来,然后找到重复项:
SELECT import.*, import.CONCAT(nume,' ',prenume) full2
FROM import
INNER JOIN (SELECT CONCAT(nume,' ',prenume) full,COUNT(*)
FROM import
WHERE users_id=1
GROUP BY full
HAVING COUNT(*)>1) as t2 ON import.full2 = t2.full
WHERE users_id=1
我认为sql语法是正确的,但我得到错误:1548 - 无法从mysql.proc加载。该表可能已损坏
5.1.59 mysql版本有什么问题吗?
答案 0 :(得分:0)
那样做
CONCAT(import.nume,' ',import.prenume) full2
而不是
import.CONCAT(nume,' ',prenume) full2
试试:
SELECT t1.*, CONCAT(t1.nume,' ',t1.prenume) full2
FROM import t1
INNER JOIN (SELECT CONCAT(i2.nume,' ',i2.prenume) `full`, COUNT(*)
FROM import i2
WHERE i2.users_id=1
GROUP BY `full`
HAVING COUNT(*)>1) as t2 ON full2 = t2.`full`
WHERE users_id=1
答案 1 :(得分:0)
更改
SELECT import.*, import.CONCAT(nume,' ',prenume) full2
到
SELECT import.*, CONCAT(import.nume,' ',import.prenume) as full2
请注意CONCAT
语句的更改以及使用列别名的as
添加
当您使用单个表时,可以从列列表中删除import.
...或者您可以使用表别名
SELECT i.*, CONCAT(i.nume,' ',i.prenume) as full2
FROM import i
WHERE i.user_id = 1
作为一个例子。
答案 2 :(得分:0)
检查所有数据库中的所有表是否与当前版本的MySQL服务器不兼容:
mysql_upgrade -uroot -p