2016-09-28 54 views
-3
SELECT Q.mem_id 
FROM tb_mem_share Q, 
     tb_member Mb 
WHERE Mb.mem_id = Q.mem_id 
     AND Q.share_num_from BETWEEN '42368' AND '42378' 

SELECT * 
FROM tb_mem_share 
WHERE share_num_from >= 42368 
     AND share_num_from <= 42378 

之间我只得到第二个记录:选择值从并运行此列

mem_id | share_num_from | share_num_to | no_of_shares | share_amt 
-----------+------------------+----------------+----------------+-------------- 
    KA003871 |  42360  |  42369  |  10   | 10000 
    KA000401 |  42370  |  42379  |  10   | 10000 

我在做什么错?

+1

你有两个疑问,试图做什么?添加示例表格数据和预期结果(如格式化文本)。 – jarlh

+2

不要将数字与字符串进行比较。 ''42368'是一个字符值,**不是**数字。 '42368'是一个数字 –

回答

2

share_num_from在你的第一个记录是42360,而不是“42368”之间和“42378”

1

不知道你正在尝试做的,但如果你想根据您从&列值选择您至少应该将它们包含在您的选择中:

SELECT * 
FROM tb_mem_share 
WHERE share_num_from >= 42368 
    AND share_num_to <= 42378; 

当前您正在过滤两次。