我在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)
它工作正常,但速度很慢,因为查询似乎没有使用索引.还有其他想法吗?谢谢!
我想替换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,因为它也编码其他东西.
我有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分钟以上,但我认为不应该.
谢谢!