ID W1 W2
1 a q
2 a w
3 b r
4 c t
我想要获得的是,使用单个SQL语句,使用W2查询表,并在W1相同的情况下获取W2。
即:
查询表格,询问'q'。 q对于它的w1是'a'所以我想带来w2的行,它们在w1中也有'a'。
我怎样才能做到这一点?我认为这是内部联系,但我失败了很多时间。
谢谢
答案 0 :(得分:4)
对于像这样简单的东西,嵌套查询可能更容易(并且如果你从连接中得到意外的乘法结果,可能会更快或更快):
SELECT * FROM TableName WHERE W1 IN (SELECT W1 FROM TableName WHERE W2='q')
你的确可以通过内部联接来做到这一点。
隐式:
SELECT * FROM TableName t1, TableName t2
WHERE t1.W1=t2.W1
AND t1.W2='q'
明确地说:
SELECT * FROM TableName t1
INNER JOIN TableName t2
ON t1.W1=t2.W1
WHERE t1.W2='q'
答案 1 :(得分:1)
SELECT t2.W2
FROM YourTable t1
INNER JOIN YourTable t2
ON t1.W1 = t2.W1
WHERE t1.W2 = 'q'
答案 2 :(得分:1)
SELECT ID,
CASE
WHEN W1=W2 THEN W1
ELSE W2
END CASE
FROM Table