可能重复:
删除MySQL中的重复行
如何从MySQL表中删除所有重复数据?
例如,使用以下数据:
SELECT * FROM names;
+----+--------+
| id | name |
+----+--------+
| 1 | google |
| 2 | yahoo |
| 3 | msn |
| 4 | google |
| 5 | google |
| 6 | yahoo |
+----+--------+
Run Code Online (Sandbox Code Playgroud)
我会使用,SELECT DISTINCT name FROM names;如果它是一个SELECT查询.
我怎么做DELETE才能删除重复项并保留每个重复记录?
在SQL Server 2005中,我有一个表cm_production,其中列出了所有已投入生产的代码.该表有ticket_number,program_type,program_name和push_number以及其他一些列.
目标:按程序类型和推送号计算所有DISTINCT程序名称
到目前为止我所拥有的是:
DECLARE @push_number INT;
SET @push_number = [HERE_ADD_NUMBER];
SELECT DISTINCT COUNT(*) AS Count, program_type AS [Type]
FROM cm_production
WHERE push_number=@push_number
GROUP BY program_type
Run Code Online (Sandbox Code Playgroud)
这让我在那里,但它计算所有的程序名称,而不是不同的程序名称(我不希望它在该查询中做).我想我无法绕过如何告诉它只计算不同的程序名而不选择它们.或者其他的东西.
我正在使用SQL Server 2008 Management Studio并且有一个我想要迁移到其他数据库服务器的表.
有没有选项将数据导出为插入SQL脚本?
我已经升级了我的系统,并为我正在处理的Web应用程序安装了MySql 5.7.9和php.我有一个动态创建的查询,当在旧版本的MySql中运行时,它可以正常工作.自升级到5.7后,我收到此错误:
SELECT列表的表达式#1不在GROUP BY子句中,并且包含非聚合列'support_desk.mod_users_groups.group_id',它在功能上不依赖于GROUP BY子句中的列; 这与sql_mode = only_full_group_by不兼容
请注意有关服务器SQL模式主题的Mysql 5.7的手册页.
这是给我带来麻烦的查询:
SELECT mod_users_groups.group_id AS 'value',
group_name AS 'text'
FROM mod_users_groups
LEFT JOIN mod_users_data ON mod_users_groups.group_id = mod_users_data.group_id
WHERE mod_users_groups.active = 1
AND mod_users_groups.department_id = 1
AND mod_users_groups.manage_work_orders = 1
AND group_name != 'root'
AND group_name != 'superuser'
GROUP BY group_name
HAVING COUNT(`user_id`) > 0
ORDER BY group_name
Run Code Online (Sandbox Code Playgroud)
我在这个问题上做了一些谷歌搜索,但我不明白only_full_group_by弄清楚我需要做些什么来修复查询.我可以关掉这个only_full_group_by选项,还是我需要做些什么呢?
如果您需要更多信息,请与我们联系.
我有一个有两列的表,ID和Value.我想在第二列中更改某些字符串的一部分.
表格示例:
ID Value
---------------------------------
1 c:\temp\123\abc\111
2 c:\temp\123\abc\222
3 c:\temp\123\abc\333
4 c:\temp\123\abc\444
Run Code Online (Sandbox Code Playgroud)
现在,123\中Value字符串是不必要的.我试着UPDATE和REPLACE:
UPDATE dbo.xxx
SET Value = REPLACE(Value, '%123%', '')
WHERE ID <= 4
Run Code Online (Sandbox Code Playgroud)
当我执行脚本时,SQL Server不会报告错误,但它也不会更新任何内容.这是为什么?
似乎在Oracle中没有AUTO_INCREMENT的概念,直到包括版本11g.
如何在Oracle 11g中创建一个行为类似自动增量的列?
如果我订
<property name="show_sql">true</property>
Run Code Online (Sandbox Code Playgroud)
在我的控制台的hibernate.cfg.xml配置文件中,我可以看到SQL.
但它不是真正的 SQL ......我能看到将直接传递给数据库的SQL代码吗?
例:
我知道了
select this_.code from true.employee this_ where this_.code=?
Run Code Online (Sandbox Code Playgroud)
我可以看吗
select employee.code from employee where employee.code=12
Run Code Online (Sandbox Code Playgroud)
在真正的 SQL?
我需要检索表中的所有行,其中2列组合都是不同的.因此,我希望所有在同一天没有任何其他销售的销售以相同的价格出售.基于日期和价格的唯一销售将更新为活动状态.
所以我在想:
UPDATE sales
SET status = 'ACTIVE'
WHERE id IN (SELECT DISTINCT (saleprice, saledate), id, count(id)
FROM sales
HAVING count = 1)
Run Code Online (Sandbox Code Playgroud)
但是我的大脑比那更远了.
在显式vs隐式内连接中是否存在效率差异?例如:
SELECT * FROM
table a INNER JOIN table b
ON a.id = b.id;
Run Code Online (Sandbox Code Playgroud)
与
SELECT a.*, b.*
FROM table a, table b
WHERE a.id = b.id;
Run Code Online (Sandbox Code Playgroud) 我怎么能unique row id不unique row id存在?
我的桌子是
col1 col2 col3 col4 col5 col6 col7
john 1 1 1 1 1 1
john 1 1 1 1 1 1
sally 2 2 2 2 2 2
sally 2 2 2 2 2 2
Run Code Online (Sandbox Code Playgroud)
我希望在重复删除后留下以下内容:
john 1 1 1 1 1 1
sally 2 2 2 2 2 2
Run Code Online (Sandbox Code Playgroud)
我已经尝试了一些查询,但我认为它们依赖于行ID,因为我没有得到理想的结果.例如:
DELETE
FROM table
WHERE col1 IN (
SELECT id
FROM table
GROUP BY id
HAVING (COUNT(col1) > 1)
)
Run Code Online (Sandbox Code Playgroud) sql ×10
duplicates ×3
mysql ×3
sql-server ×3
distinct ×1
group-by ×1
hibernate ×1
insert ×1
java ×1
join ×1
oracle ×1
orm ×1
postgresql ×1
replace ×1
sql-delete ×1
sql-update ×1
string ×1
t-sql ×1