gpt4 book ai didi

mysql 错误代码 : 1066. 不唯一的表/别名: 't2'

转载 作者:行者123 更新时间:2023-11-29 17:16:16 26 4
gpt4 key购买 nike

我正在使用mysql工作台和mysql服务器来查询数据库。我有两个表 t1t2,其中有一列 t1_namet2_name。 t2 有 300 万条记录,t1 有 100 万条记录。

我需要选择所有 t2_names,其中 t2_names 不等于 t1_name 或不是 t1_name 的子字符串。当我尝试下面的查询时:

SELECT DISTINCT `t2_name`
FROM `t2`, `t1`
`t2`.`t2_name` NOT LIKE CONCAT('%',`t1`.`t1_name`,'%'));

我收到此错误:

mysql Error Code: 1066. Not unique table/alias: 't2'

您能解释一下并纠正我的疑问吗?之前我做过this post并尝试了这个查询:

SELECT DISTINCT `t2_name`
FROM `t2`
WHERE NOT EXISTS (SELECT * FROM `t1`
WHERE `t2_name` LIKE CONCAT('%',`t2_name`,'%'));

但这需要永远并且永无止境。

最佳答案

首先限定所有列名称。这仍然会导致错误吗?

SELECT DISTINCT t2.t2_name
FROM t2 JOIN
t1
ON t2.t2_name NOT LIKE CONCAT('%', t1.t1_name, '%');

如果您的问题是性能,那么如果没有 distinct不存在 会更好:

SELECT t2_name
FROM t2
WHERE NOT EXISTS (SELECT 1
FROM t1
WHERE t2.t2_name LIKE CONCAT('%', t1.t1_name, '%')
);

但是,这不会带来太大的改进。不幸的是,使用此类通配符的 like 查询效率非常低。通常,您可以构建数据模型,以便编写更高效的查询。

关于mysql 错误代码 : 1066. 不唯一的表/别名: 't2',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51580626/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com