小编syd*_*ydo的帖子

MySQL用户表:查找具有相同电子邮件地址的行

我在MySQL中有一个用户表.

id | username | email
Run Code Online (Sandbox Code Playgroud)

我想根据电子邮件地址获取重复用户的ID.所以基本上找到用户的ID,其中可以在表中找到超过1次的电子邮件地址.

我写了这样的东西:

SELECT id
FROM users as users
WHERE (
  SELECT count(id)
  FROM users as users2
  WHERE users.email = users2.email
) > 1
Run Code Online (Sandbox Code Playgroud)

它工作正常,但速度很慢,因为查询似乎没有使用索引.还有其他想法吗?谢谢!

mysql indexing

3
推荐指数
1
解决办法
1494
查看次数

如何在<img>标记中用%20替换空格

我想替换html文本的图像标记中的所有空格.

例:

<img src="photo 1.jpg" />
Run Code Online (Sandbox Code Playgroud)

<img src="photo%201.jpg"/>
Run Code Online (Sandbox Code Playgroud)

我没有找到preg_replace的灵魂,但它可能是一个简单的正则表达式线.谢谢!

编辑:对不起伙计们,我的描述不太清楚.所以,我有一个完整的html页面,我只想替换img标签内部.我不能在这里使用urlencode,因为它也编码其他东西.

php regex preg-replace

3
推荐指数
2
解决办法
1万
查看次数

与group_concat的左连接太慢了

我有2张桌子:

users (id, firstname, lastname, etc)
users_to_groups (user_id(index), group_id(index))
Run Code Online (Sandbox Code Playgroud)

我想创建一个返回如下记录的查询:

firstname   lastname    groups
John        Smith       1,2,3,5
Tom         Doe         3,5
Run Code Online (Sandbox Code Playgroud)

我使用GROUP_CONCAT函数,目前我的查询是:

SELECT * FROM users
LEFT OUTER JOIN 
(
     SELECT user_id, group_concat(group_id) FROM users_to_groups GROUP BY user_id
) AS i
ON users.id = i.user_id
Run Code Online (Sandbox Code Playgroud)

它有效,但速度很慢.我在组表中有40k用户和260k记录.看起来查询不使用索引,并为每个用户遍历所有260k行.

有没有办法让它更快?这需要3分钟以上,但我认为不应该.

谢谢!

mysql sql

2
推荐指数
1
解决办法
2428
查看次数

标签 统计

mysql ×2

indexing ×1

php ×1

preg-replace ×1

regex ×1

sql ×1