如果有人在这里可以回答,请提前致谢。 我有这两个表:
Strings Numbers
---------------- ----------------
| ID | String | | ID | Number |
---------------- ----------------
| 1 | 'A' | | 1 | 'First' |
| 1 | 10 | | 2 | 'Second' |
---------------- | 3 | 'Third' |
| 2 | 'B' | | 4 | 'Fourth' |
| 2 | 11 | | 5 | 'Fifth' |
---------------- ----------------
| 3 | 'A' |
| 3 | 12 |
----------------
| 4 | 'B' |
| 4 | 13 |
----------------
| 5 | 'B' |
| 5 | 14 |
----------------
例如,我使用'A'过滤“关联”的值,我必须得到一个这样的表:
Strings
----------------
| ID | String |
----------------
| 1 | 10 |
----------------
| 3 | 12 |
----------------
例如,如果想过滤“关联”与'B'的值,我必须得到一个这样的表:
Strings
----------------
| ID | String |
----------------
| 2 | 11 |
----------------
| 4 | 13 |
----------------
| 5 | 14 |
----------------
再次,谢谢你能帮助我。
答案 0 :(得分:2)
除非我遗漏了你会使用的东西:
select s1.id, s1.string
from strings s1
inner join strings s2
on s1.id = s2.id
and s1.string != 'A'
and s2.string = 'A'
或者
select s1.id, s1.string
from strings s1
inner join strings s2
on s1.id = s2.id
and s1.string != 'B'
and s2.string = 'B'
答案 1 :(得分:0)
SELECT * FROM Strings WHERE string = "A"
根据需要替换*的字段名称。
答案 2 :(得分:0)
select s2.ID,
s2.String
from Strings as s1
inner join Strings as s2
on s2.id = s1.id
and s2.String != s1.String
where s1.String = ?
但是,这种表结构值得怀疑。 ID似乎应该是主键,但它不能是因为有多个值。你也永远不需要Numbers表,为什么要把它包含在问题中呢? :)