Android 选择除重复之外的所有值
我有三张桌子。 第一名称:ExTable。列:idinteger,nametextAndroid 选择除重复之外的所有值,android,sql,sqlite,Android,Sql,Sqlite,我有三张桌子。 第一名称:ExTable。列:idinteger,nametext -------------------- | id | name | -------------------- | 1 | exA | | 2 | exB | | 3 | exC | -------------------- ------------------- | id | name | ------------------- |
--------------------
| id | name |
--------------------
| 1 | exA |
| 2 | exB |
| 3 | exC |
--------------------
-------------------
| id | name |
-------------------
| 1 | first |
| 2 | second|
| 3 | third |
-------------------
第二:名称:CerTable。列:idinteger,nametext
--------------------
| id | name |
--------------------
| 1 | exA |
| 2 | exB |
| 3 | exC |
--------------------
-------------------
| id | name |
-------------------
| 1 | first |
| 2 | second|
| 3 | third |
-------------------
第三:名称:CerExTable。列:idinteger,id\u cerinteger from CerTable,id\u exinteger-from ExTable
----------------------------------
| id | id_cer | id_ex |
----------------------------------
| 1 | 1 (first) |1 (exA)|
| 2 | 1 (first) |2 (exB)|
| 3 | 1 (first) |3 (exC)|
| 3 | 2 (second) |1 (exA)|
| 3 | 2 (second) |3 (exC)|
| 3 | 3 (third) |2 (exB)|
---------------------------------
所以,我想选择id_cer=2和id_ex的数据=不平等!1和3。所以,我想得到下一个值:exB。如果id\u cer=3,我想得到:exA,exC,如果id\u cer=1,我想得到null
我的SQL查询:
SELECT ExTable.id, ExTable.name FROM ExTable, CerExTable WHERE CerExTable.id_cer = 2 AND CerExTable.id_ex != ExTable.id
预期结果:
--------------------
| id | name |
--------------------
| 2 | exB |
--------------------
但结果是:
--------------------
| id | name |
--------------------
| 2 | exB |
| 3 | exC |
| 1 | exA |
| 2 | exB |
--------------------
因为此查询首先获取exA-exB、exC之外的数据,然后获取C-exA、exB之外的数据
如何获取数据异常,而不是一次获取两行数据?如果您更改了select putting an*,您将看到您实际上在执行更复杂的查询。结果是: 从ExTable、CerExTable中选择*,其中CerExTable.id\u cer=2和CerExTable.id\u ex!=ExTable.id 所有这些行都满足您要查询的WHERE条件 实现此结果的解决方案是在同一查询中使用2个选择:
选择*FROM ExTable WHERE ExTable.id NOT IN SELECT CerExTable.id_ex FROM CerExTable WHERE CerExTable.id_cer=2 这是你第二次发布这个问题,我仍然不知道你想要完成什么。我可能不够聪明。