2013-04-29 128 views
-1

假設我有一個查詢如何知道被執行,查詢的一部分

create table friends (
userid int, 
friend int, 
status int 
); 

它是更多鈔票知道正在執行其查詢的一部分?例如 ,下面的示例應該告訴1是否滿足(userid=1 and friend=2),或者告知2是否執行了零件(friend=2 and userid=1)

//wrong example 
select status,@var 
    from friends 
where @var:=(userid=1 and friend=2) 
    or @var:=(friend=2 and userid=1); 
+0

你怎麼樣爲每個「如果」語句做2個單獨的查詢? – Saturnix 2013-04-29 02:31:05

+0

我想你想'CASE' – Patashu 2013-04-29 02:33:32

+1

建議,離開你的代碼。在相當清晰的英語中,陳述你正在努力完成的事情。如果此解釋涉及輸入參數,請指定它們的發送方式,而不使用任何編碼術語。 – 2013-04-29 02:46:26

回答

3

我想這是你在找什麼:

SELECT status, 
    CASE 
    WHEN (userid=1 and friend=2) THEN 'opt1' 
    WHEN (friend=2 and userid=1) THEN 'opt2' 
END AS 'var' 
FROM friends 
WHERE userid IN (1, 2) 
    OR friend IN (1, 2) 
+0

錯字警報!我想你在WHEN的時候換位了。 – 2013-04-29 02:45:53

+0

這部分解決了這個問題,這是針對表中的每一行執行的。這隻能在一個解決方案行上有效嗎? – unkn0wn 2013-04-29 02:46:51

+0

可能有一個where子句。 – 2013-04-29 02:50:08