SELECT (CASE WHEN columna = 887 THEN columnb ELSE columna END) AS 'columnAlias'
FROM <table>
WHERE columna = 887
OR columnb = 887
编辑:使用上述查询的结果来获得从另一个表详细记录.. 。
使用JOIN:
SELECT T2.*
FROM Table2 AS T2
INNER JOIN (SELECT (CASE WHEN columna = 887 THEN columnb ELSE columna END) AS 'columnAlias'
FROM Table1
WHERE columna = 887
OR columnb = 887) AS _Temp ON _Temp.columnAlias = T2.ForeignKeyColumn
使用嵌套查询:
SELECT T2.*
FROM Table2 AS T2
WHERE T2.ForeignKeyColumn IN (SELECT (CASE WHEN columna = 887 THEN columnb ELSE columna END) AS 'columnAlias'
FROM Table1
WHERE columna = 887
OR columnb = 887)
什么是b列,而什么是两列之间的关系? – 2012-01-18 20:23:52
如果你能解释什么是columnb,那会帮助我理解你在做什么。 – 2012-01-18 20:24:50
这两列都是id的成员。第一个只是发送请求的人。还有一个列的状态,如果这是0,那么请求还没有得到满足,如果它的1,那么它已经赞成,这两个人是朋友 – Jake 2012-01-18 20:29:03