SELECT NAME 
FROM TABLE1 T1 
JOIN TABLE2 T2  
ON T1.SN = T2.SN   
AND T2.SN = '2303' 
我这样写只能查询 T2.SN = '2303' 的一个结果,
我想一次同时查询出 SN = 2021,2022,2023,2024......对应的NAME结果集。
请教高手SQL语句怎么写?
  

解决方案 »

  1.   

    2个贴? 
    SELECT NAME  
    FROM TABLE1 T1  
    JOIN TABLE2 T2   
    ON T1.SN = T2.SN   
    AND T2.SN in (2021,2022,2023,2024......)
      

  2.   

    SELECT NAME  
    FROM TABLE2 T2   
    where T2.SN in (2021,2022,2023,2024......)感觉根本不用连表
      

  3.   

    SELECT NAME  
    FROM TABLE1 T1  
    JOIN TABLE2 T2   
    ON T1.SN = T2.SN   
    AND T2.SN in (2021,2022,2023,2024......)
      

  4.   

    T2.SN in (2021,2022,2023,2024......)是一种
    T2.SN like '202_'是另外一种,
    再者T2.SN between 2021 and 2024建议使用第三种
      

  5.   

    说句题外话,虽然不加引号oracle会隐式转化成number比较,但是如果varchar不是数字会报错。并且启用to_number函数后就不走索引了。
    所以类型转换最好放在条件中而不是列中。to_date也是一样的。随然理论上讲sn列应该是‘2004’的纯数字字符串,并且前台程序会有约束。但是数据量大了以后,实际生产中会有各种离奇的数据存在这个列里。大部分程序员应该都吃过这方面的亏,所以还是小心无大错。