Mysql SQL Where子句:除一个字段外,所有字段均相等

Mysql SQL Where子句:除一个字段外,所有字段均相等,mysql,sql,inner-join,distinct,where,Mysql,Sql,Inner Join,Distinct,Where,我可以得到一个条目吗?它在所有字段中都是相等的,除了已定义的 例如: 选择一个* 从表_中选择名称a 内部联接表\u名称b on(a.price=b.price) a.数量=b.数量 和{所有剩余参数}) a.id和b.id 我需要找到相同的条目,除了它的ID(重复条目)将您的“AND a.ID b.ID”更改为“WHERE a.ID b.ID”,这应该适用于您。您可以使用SELECT和GROUP BY子句。 例如,如果您有一个名为名称的表,其中有一列名称,您希望检查该列是否重复。你可以做:

我可以得到一个条目吗?它在所有字段中都是相等的,除了已定义的

例如:

选择一个*
从表_中选择名称a
内部联接表\u名称b
on(a.price=b.price)
a.数量=b.数量
和{所有剩余参数})
a.id和b.id

我需要找到相同的条目,除了它的ID(重复条目)

将您的“AND a.ID b.ID”更改为“WHERE a.ID b.ID”,这应该适用于您。

您可以使用
SELECT
GROUP BY
子句。 例如,如果您有一个名为
名称
的表,其中有一列
名称
,您希望检查该列是否重复。你可以做:

select name, count(*) c from names group by name having c > 1;
这还将返回一个附加列,指示行中出现重复值的次数


希望有帮助。

所有剩余参数您必须设置所有剩余参数。您可以使用一个自动化功能,例如一个使用
减号
相交
运算符构建所有参数的函数。这是可能的,但MySQL不支持这些函数。所以我不得不说,“不,你不能”为什么你的最后一个条件没有包含在ON子句中?@bub没有那么方便,好像会有本机解决方案。还是有道理吗tho@BeS嗯,是的,只是为了可读性,“除外条件”被移出了括号,重新阅读问题。如果一个表有30列,他想比较其中的29列,并确保第30列不匹配;但是没有列出所有的列…xQbert-将最后一个和更改为WHERE将从id不同的联接表中选择记录,这正是他所寻找的。如果没有定义所有其他字段,我们如何知道它们是相等的?Bub在评论中说“你必须列出它们”,Sly_-huh表示这是“不方便的”*当使用内部连接时,使其成为where子句对结果没有影响。我假设{所有剩余参数}意味着他将表“a”中的所有字段与表“b”中相应的字段相等,而表“b”中的字段不需要,这里的一切都是关于教育的。我并不是想表现得粗暴(我没有投反对票),我想确保我们理解了这个问题(也许我理解错了),并且你的回答对内部连接没有影响。这是我能想到的找到重复项的唯一方法,但他必须在“选择”和“分组方式”中单独列出所有X字段。(注意:您可以使用系统表生成整个列列表,这样就不必手动键入它们!)
select name, count(*) c from names group by name having c > 1;