从表中的两列中选择相同的数据,并使用一条sql语句显示所有数据

Posted

技术标签:

【中文标题】从表中的两列中选择相同的数据,并使用一条sql语句显示所有数据【英文标题】:select same data from two columns in a table, and using one sql statement to show all data 【发布时间】:2012-12-27 09:19:51 【问题描述】:

我是sql领域的新人,我有一些问题。

如下表

Table Name:EM

ID    name    Birth   High
1     Tom     11/23   65
2     Mary    11/23   65
3     Bill    03/02   55
4     Liny    01/08   45
5     Kevin   05/16   50
6     Lee     05/16   50

但我只需要像下面这样的数据

ID    name    Birth   High
1     Tom     11/23   65
2     Mary    11/23   65
3     Kevin   05/16   50
4     Lee     05/16   50

我用傻瓜sql来获取这样的数据

select * from em where birth = '11/23' and high = '65';
select * from em where birth = '05/16' and high = '50';

请教我如何在一条sql语句中得到结果,非常感谢。

【问题讨论】:

你的意思是动态的吗?如果不是,则从 em 中选择 * 其中 (birth = '11/23' and high = '65') or (birth = '05/16' and high = '50'); DazzaL 的回答正是我所需要的 ^^ 谢谢 【参考方案1】:

你想要的

select * from em where (birth, high) in (('11/23','65'),('05/16','50'));

【讨论】:

【参考方案2】:

使用OR 组合它们:

select * from em where (birth = '11/23' and high = '65') or (birth = '05/16' and high = '50');

【讨论】:

谢谢,但我不希望如此。我已经考虑过了,但还是太长了。 为什么这么长?您标记为答案的in 声明也不例外。 这样,我必须重复输入“出生=''和高=''”,这只是一个例子,但实际上我必须选择很多数据,我想如果示例数据太多,每个人都会感到头晕:D。仍然感谢您的付出时间来帮助我^^ @Keith 这实际上取决于。如果birthhigh约束总是成对出现,那么IN语句更简单;否则,OR 语句更灵活。由于您只举了一个例子,我无法提前判断哪个更好。 @HuiZheng 对不起,我的问题没有说清楚,感谢您的阐述,它们对我编码和搜索数据非常有用^^【参考方案3】:

You may start learning SQL from here

使用INBETWEEN 来表示check tutorial for IN here 和check tutorial for BETWEEN here

这可能是您的查询

SELECT * FROM YOUR_TABLE WHERE COL1 IN (DATE_HERE,ID_HERE) AND/OR COL2 IN (DATE_HERE,ID_HERE)

【讨论】:

【参考方案4】:
IN operator is used for adding multiples values

select * from em where birth in ('11/23','05/16') and high in ('65','50');

【讨论】:

这也将返回 birth = 11/23high = 50 所在的行。查看示例数据,我怀疑这就是 OP 想要的,但我们也不能确定。【参考方案5】:

你可以使用"or","in"操作符

像这样:

 select * from em 
 where 
  birth = '11/23' or birth = '05/16' 
  and high = '65' or  high = '50';

【讨论】:

以上是关于从表中的两列中选择相同的数据,并使用一条sql语句显示所有数据的主要内容,如果未能解决你的问题,请参考以下文章

从表 A 中选择与表 B 中的两列匹配的记录子集

HIVE:如何仅从两个表中的两列中选择第三个表中不存在的不同值?

如何从表中选择所有列并计数?

如何通过比较两个表中的两列来更新表中的列

怎样用Sql语句判断一张表中的两条数据相同

从表中选择行,其中具有相同 id 的另一个表中的行在另一列中具有特定值