2015-01-16 87 views
0

我有一個表作爲doc_number列的客戶端列,我也有客戶端文檔的列表,我不知道它們是否存在於客戶端表中。過濾器和條件

現在的問題是,是否有任何簡單的方法可以讓所有在該列表中而不在表格中的客戶獲得?

我不想使用輔助表,謝謝!

+0

試圖澄清你的問題 –

回答

1

您可以編寫自己的功能

CREATE DEFINER=`root`@`localhost` FUNCTION `filter_clients`(InString Varchar(1000)) RETURNS varchar(1000) CHARSET utf8 
BEGIN 

    # loop to divide string list by comma 

    # select for each string segment 

    # add result to Outstring.i 

RETURN OutString; 
END 

後來與

SELECT filter_clients('123456, 1234658, 145678') 

調用它,我不會做到這一點,將列表中的其他語言

+0

可能我並不清楚,但我沒有第二張表只是像這樣的文件列表(123456,1234658,145678),但更長! – theGabyRod

+0

如果問題是(123456,1234658,145678)中的哪一個不在客戶端表中,那麼我會按照您選擇的編程語言將MySQL列表分割到MySQL之外,然後對每個數字運行SQL檢查。可以編寫一個循環遍歷MySQL中的列表的SQL函數,但這很容易在外面完成。 – 576i

+0

的想法是做更簡單的事情,我可以創建一個臨時表,並在那裏做一個正確的外部連接。 BUT多數民衆贊成thatlllly什麼我不想做:) – theGabyRod

0

您可以使用派生表:

SELECT * FROM (
    SELECT 2000 AS doc_number 
    UNION ALL SELECT 2001 
    UNION ALL SELECT 2002 
    UNION ALL SELECT 2003 
    UNION ALL SELECT 2004 
    UNION ALL SELECT 2005 
    UNION ALL SELECT 2006 
) b 
WHERE b.doc_number NOT IN (SELECT doc_number FROM client) 

只需打開一個電子表格並使用文檔列表進行「union all select ...」。