从表中的两列中选择相同的数据,并使用一条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 这实际上取决于。如果birth
和high
约束总是成对出现,那么IN
语句更简单;否则,OR
语句更灵活。由于您只举了一个例子,我无法提前判断哪个更好。
@HuiZheng 对不起,我的问题没有说清楚,感谢您的阐述,它们对我编码和搜索数据非常有用^^【参考方案3】:
You may start learning SQL from here
使用IN
和BETWEEN
来表示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/23
和 high = 50
所在的行。查看示例数据,我怀疑这就是 OP 想要的,但我们也不能确定。【参考方案5】:
你可以使用"or","in"操作符
像这样:
select * from em
where
birth = '11/23' or birth = '05/16'
and high = '65' or high = '50';
【讨论】:
以上是关于从表中的两列中选择相同的数据,并使用一条sql语句显示所有数据的主要内容,如果未能解决你的问题,请参考以下文章