SQL如何根据其他列的条件选择具有相同ID的多行?

时间:2019-05-31 16:46:30

标签: sql-server

我想选择ID符合第2列中条件的行:首先是Apple,然后是Orange。理想的答案是ID = 1的前2行。

  • ID,Column11,Column12,Column2
  • 1、1、0,苹果
  • 1、0、1,橙色
  • 2、1、0,苹果
  • 2,0,1,苹果

我添加了两个支持列Column11和column12来标记一个ID的哪一行是第一行,哪一行是第二行。下面是我的代码,但未选择任何行。

SELECT * FROM table WHERE Column11=1 and Column2=’Apple’ AND Column12=1 AND Column2=’Orange’

如果我仅在下面使用,我将获得第1行

SELECT * FROM table WHERE Column11=1 and Column2=’Apple’

如果仅在下面使用,我将获得第2行

SELECT * FROM table WHERE Column12=1 AND Column2=’Orange’

为什么把它们放在一起,我什么也没得到?请帮忙。谢谢!

1 个答案:

答案 0 :(得分:1)

试试这个-

SELECT * FROM your_table
WHERE ID IN
(
    SELECT ID FROM your_table 
    WHERE Column2 IN ('Apple','Orange')
    GROUP BY ID 
    HAVING COUNT(Column2) = COUNT(DISTINCT Column2)
)
AND  
(
    (Column11=1 and Column2='Apple')
    OR (Column12=1 AND Column2='Orange')
)