是的,有一種方法可以做這樣的選擇。實際的查詢實際上取決於你想返回的結果集。你想要一行還是兩行? CallCenterId是否應該在列表中複製?你想CallCenterId排除列表中的用戶!= 1,如果它出現在列表中的用戶= 1?所有這些都是可能的。
測試用例:規範的
CREATE TABLE tbl_mytable(`user` INT UNSIGNED, CallCenterId VARCHAR(2));
INSERT INTO tbl_mytable
VALUES (1,'a'),(1,'b'),(2,'a'),(2,'c'),(2,'a'),(2,'d'),(NULL,'x');
一個可能的解釋是,你想爲用戶= 1所有CallCenterId的列表,並你要出現在表中,但沒有出現在列表中的用戶= 1 ALL CallCenterId的另一個列表。基本上,你想要一個CallCenterId出現在一個列表或其他,但不是兩個。在測試的情況下,這將意味着你會想回到這樣的事情:
user=1 NOT user=1
------ ----------
a,b c,d,x
該ResultSet可以通過這樣的查詢返回:
SELECT GROUP_CONCAT(IF(user_one,t.CallCenterId,NULL)
ORDER BY t.CallCenterId
) AS `user=1`
, GROUP_CONCAT(IF(user_one,NULL,t.CallCenterId)
ORDER BY t.CallCenterId
) AS `NOT user=1`
FROM (
SELECT u.CallCenterId
, MAX(IF(u.user=1,1,0)) AS user_one
FROM tbl_mytable u
GROUP BY u.CallCenterId
) t
另一種可能的解釋是,你希望兩個CallCenterID列表返回同一行上,用含有CallCenterId用戶= 1一個列表,包含所有CallCenterId比用戶= 1,意義以外的所有用戶的其他列表,同樣CallCenterId可以出現在兩個列表。在這種情況下,像這樣將工作:
SELECT GROUP_CONCAT(DISTINCT IF(t.`user`=1,t.CallCenterID,NULL)
ORDER BY t.CallCenterId
) AS `user=1`
, GROUP_CONCAT(DISTINCT IF(t.`user`!=1,t.CallCenterID,NULL)
ORDER BY t.CallCenterId
) AS `user!=1`
FROM tbl_mytable t
回報:
user=1 user!=1
------ ---------
a,b a,c,d
它也可能返回這些列表作爲兩個獨立的行,是否適合你更好。
SELECT IF(t.`user`=1,'user=1','user!=1') AS `which_users`
, GROUP_CONCAT(t.CallCenterID ORDER BY t.CallCenterId) AS `call_centers`
FROM tbl_mytable t
GROUP BY which_users
ORDER BY which_users DESC
(:「!用戶= 1」注意的call_centers列表還將包括值的行,其中user
列是NULL;那些行可以排除具有輕微的調整。)
which_users call_centers
----------- --------------
user=1 a,b
user!=1 a,a,c,d,x
略微不同的查詢將在列表中消除重複(使用DISTINCT關鍵字),並消除其中user
柱IS NULL任何行(添加WHERE子句):
SELECT IF(t.`user`=1,'user=1','user!=1') AS `which_users`
, GROUP_CONCAT(t.CallCenterID ORDER BY t.CallCenterId) AS `call_centers`
FROM tbl_mytable t
WHERE t.user IS NOT NULL
GROUP BY which_users
ORDER BY which_users DESC
回報:
which_users call_centers
----------- ------------
user=1 a,b
user!=1 a,c,d
如果這些都不是你在找什麼,你需要更加清晰地明確你想要返回什麼結果集。
原諒我,但你想要得到那些= 1和那些!= 1,是不是所有的人? – George
下降條件! :) – tuxuday
請向我們顯示您的預期結果和表格結構。 – bonCodigo