2013-02-14 131 views
0
###user_name  mobile  product_type### 
aaa 12345 1 

aaa 12345 2 

bbb 56789 2 

ccc 23456 2 

bbb 56789 1 

ccc 23456 1 

ddd 11111 1 

eee 22222 2 

我的db.table以上述格式.....其中2代表1的副本(移動和名稱shuold都是唯一的)它必須具有原始product_type 1 .... I希望## EEE 22222 2 ##的記錄..如果你發現它沒有PRODUCT_TYPE 1..hope你懂的...我想NOT IN SQL QUERY SET

SELECT * FROM `applications` a where a.product_type=2 and user_name in (select user_name from `partners_applications` where user_name=a.user_name) order by a.user_name 

我知道這是不對的,你們可以請幫助我解決...

+0

你期望得到什麼結果?你可以發佈prtners表 – 2013-02-14 16:57:54

回答

0

你可以試試這個:

SELECT * 
    FROM (SELECT *, count(*) AS counter 
      FROM applications 
     GROUP BY user_name, mobile) aView 
WHERE product_type = 2 AND counter = 1; 
+0

我認爲這對我有效..我無法評價這個職位...它要求一些聲譽... – user1854007 2013-02-14 17:29:43

+0

@ user1854007你可以接受[一個令人滿意的答案](http:// stackoverflow。 com/faq#howtoask)。 – SparKot 2013-02-14 17:33:29

0

我覺得你找這個

 SELECT * FROM `applications` a 
    INNER JOIN `partners_applications` pa ON pa.user_name=a.user_name 
    WHERE a.product_type=2 
    GROUP BY a.user_name 
    ORDER BY a.user_name 

編輯

因您的錯字邪在這裏我更新的答案

SELECT * FROM `partners_applications` a 
    where a.product_type=2 
    and a.user_name not in (select user_name from partners_applications 
        where product_type = 1) 
    group by a.user_name 
    order by a.user_name 

SQL DEMO HERE

EDIT2。

好,如果你有user_name具有不同的電話號碼,然後你可以試試這個

SELECT * FROM `partners_applications` a 
    where a.product_type=2 
    and a.user_name not in (select user_name from partners_applications 
        where product_type = 1) 

    order by a.user_name ; 

DEMO SQL FIDDLE

+0

對不起,我的拼寫錯誤都是同一張表,它應該讀取爲SELECT * FROM'partners_applications' a其中a.product_type = 2和user_name in(從「partners_applications」中選擇user_name = a.user_name)order by a.user_name – user1854007 2013-02-14 17:09:13

+0

我只需要## eee 22222 2 ##的記錄..如果你發現它沒有product_type 1 .. – user1854007 2013-02-14 17:17:25

+0

編輯我的答案,希望是你需要的 – 2013-02-14 17:24:31

0

讓我看看,如果我得到這個權利。您想要查看所有隻有一種產品類型等於2的user_name | mobile對(否則,您將顯示用戶名ddd,對不對?)。

這是爲你做的那個查詢。

select user_name, mobile, max(product_type) product_type 
from table1 
group by user_name, mobile 
having count(distinct product_type) = 1 and sum(product_type = 2) = 1 

演示here

注意:我注意到您還想在結果中看到產品類型。但是,這應該是不必要的,因爲初始條件是結果只有product_type = 2條記錄。無論如何,我添加了一個max函數,以避免不必要和昂貴的連接或子查詢。