gpt4 book ai didi

mysql - 使用 INNER JOIN 时 MySql 语法错误

转载 作者:行者123 更新时间:2023-11-29 11:48:57 25 4
gpt4 key购买 nike

我正在尝试检查是否已选择用户名。在显示查询之前,这是我的表结构:

用户

ID | data

5 0
6 1

USERS_SETTINGS

ID | Username

5 Dillinger
6 John

如何在表user中看到系统中可用的所有用户的列表,在users_settings表中我有每个用户的设置user 表的。现在,如果在系统中注册的客户选择了用户名 Dillinger,则会出现一条错误消息,因为用户名已选择,相反,如果客户选择了 John,则系统不会显示任何错误,因为已有一个使用该用户名的注册用户,但已被删除数据:1。我尝试过的:

query = "SELECT Count(username) from users_settings u
INNER JOIN user id d ON
u.id = d.id
WHERE u.username = @usernamep AND
d.data = @datap"

但是当我执行 .ExecuteScalar 时,我得到:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use neare 'd ON u.id = d.id 'at line 2

到底出了什么问题?

最佳答案

这解决了语法问题:

select count(*)
from user u join
user_settings us
on u.id = us.id -- I am guessing about the right column name here
where u.username = @usernamep and us.data = @datap;

但是,这比实际需要的要贵。更便宜的方法使用 exists 而不是 count():

select 1
from user u
where u.username = @usernamep and
exists (select 1
from user_settings us
where u.id = us.id and us.data = @datap
)
limit 1;

如果返回任何行,则用户已存在。为了获得最佳性能,您需要在 user(username)user_settings(user_id, data) 上建立索引。

关于mysql - 使用 INNER JOIN 时 MySql 语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34482141/

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