mysql - 只接受没有重复 ID 的行

标签 mysql sql

我试图从一个连接到另一个表的表中获取信息,但我只想要没有重复数据的行。很难解释,所以这里有一个例子:

  table1
----------    
id    | data1 |  data2
1     |   x   |    x 
2     |   x   |    x 
3     |   x   |    x  
4     |   x   |    x  


 table2 
----------
id  | table1_id | data1 
1   |    1      |   x
2   |    2      |   x  
3   |    2      |   x  
4   |    3      |   x  

在这种情况下,我想从表 2 中获取第 1 行和第 4 行,而不是第 2 行和第 3 行,因为表 ID 重复

最佳答案

您不需要第一个表。只需使用

select table1_id
from table2
group by table1_id
having count(*) < 2

获取table1_id。如果您需要完整的行,您可以使用

select * from table2
where table1_id in
(
    select table1_id
    from table2
    group by table1_id
    having count(*) < 2
)

在 Mysql 中你可以改为做

select *
from table2
group by table1_id
having count(*) < 2

但是这个特性很危险。

关于mysql - 只接受没有重复 ID 的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24660997/

相关文章:

java - 如何将结果集的所有行返回给客户端?

mysql - rails 4 : Displaying tables related with user_id

php - 获取 SQl 语法错误

Mysql暂时抑制唯一索引

mysql - WHERE 子句中的单列多行

MySQL。函数中的逻辑错误应返回大写字母前带有空格的字符串

php - 从 mysql 查询中分割 php 数组

sql - MSSQL获取时差低于X的行

mysql - 关系模式 : (0, 1) 到 (0,1) 与属性的关系 - 创建一个新表?

java - 使用 Java/sql 存储和检索数据时遇到问题