我有一个SQLite表,其中一些列只有两个行单元格可以同时包含相同的值,例如列ColA(ValA 1)和ColC(ValC 1)中的单元格
| ID| ColA| ColB| ColC| ColD|
| --------------|--------------|--------------|--------------|--------------|
| 1|ValA1| ValB1|**ValC1| ValD1|
| 二|ValA2| ValB2| ValC2| ValD2|
| 三|ValA1| ValB3|**ValC1| ValD3|
| 四|ValA4| ValB4| ValC4| ValD4|
| 五|ValA1| ValB5|**ValC1| ValD5|
| 六|ValA1| ValB6|**ValC1| ValD6|
| 七|ValA7| ValB7| ValC7| ValD7|
我需要返回两个表的SELECT查询
1.具有同时在ColA(ValA 1)和ColC(ValC 1)中没有相同值的记录(除了第一个记录,在本例中ID = 1),并且没有“ID”列
| ID| ColA| ColB| ColC| ColD|
| --------------|--------------|--------------|--------------|--------------|
| 1|ValA1| ValB1|**ValC1| ValD1|
| 二|ValA2| ValB2| ValC2| ValD2|
| 四|ValA4| ValB4| ValC4| ValD4|
| 七|ValA7| ValB7| ValC7| ValD7|
1.在此示例中,具有同时在ColA(ValA 1)和ColC(ValC 1)中包含相同值的记录,并且没有“ID”列和ID = 1的行,因为此行在第一个表中
| ID| ColA| ColB| ColC| ColD|
| --------------|--------------|--------------|--------------|--------------|
| 三|ValA1| ValB3|**ValC1| ValD3|
| 五|ValA1| ValB5|**ValC1| ValD5|
| 六|ValA1| ValB6|**ValC1| ValD6|
我尝试对第一种情况使用“SELECT”查询
- SELECT ColA,ColB,ColC,ColD FROM table t1 WHERE EXISTS(SELECT ColA,ColC FROM table t2 WHERE t1.ColA = t2.ColA AND t1.ColC = t2.ColC GROUP BY ColA HAVING(count(ColA)=1 AND count(ColC)=1))
并获得了不包含ID = 1的行的表
| ID| ColA| ColB| ColC| ColD|
| --------------|--------------|--------------|--------------|--------------|
| 二|ValA2| ValB2| ValC2| ValD2|
| 四|ValA4| ValB4| ValC4| ValD4|
| 七|ValA7| ValB7| ValC7| ValD7|
和'SELECT'查询用于第二种情况 - SELECT ColA,ColB,ColC,ColD FROM table t1 WHERE EXISTS(SELECT ColA,ColC FROM table t2 WHERE t1.ColA = t2.ColA AND t1.ColC = t2.ColC GROUP BY ColA HAVING(count(ColA)>1 AND count(ColC)>1))
并获取了行ID = 1的表
| ID| ColA| ColB| ColC| ColD|
| --------------|--------------|--------------|--------------|--------------|
| 1|ValA1| ValB1|**ValC1| ValD1|
| 三|ValA1| ValB3|**ValC1| ValD3|
| 五|ValA1| ValB5|**ValC1| ValD5|
| 六|ValA1| ValB6|**ValC1| ValD6|
谢谢你的回复
1条答案
按热度按时间1u4esq0p1#
我们可以使用
row_number
函数。对于第一种情况,* 同时记录ColA(ValA1)和ColC(ValC1)中没有相同值的记录,除了第一个记录,在本示例中ID = 1 *:对于第二种情况,* 同时在ColA(ValA1)和ColC(ValC1)中包含相同值且没有“ID”列和ID = 1的行的记录 *:
Demo