这是我的桌子。
id customer product
1 Tizag Pen
4 Gerald Garner 19" LCD Screen
5 Tizag 19" LCD Screen
我想选择同时拥有“Pen”和“19”LCD Screen的客户。因此,结果是客户'Tizag'。
我该怎么办呢。
谢谢和问候, Rupak Banerjee。
答案 0 :(得分:6)
试试这个:
SELECT customer FROM table t1
JOIN table t2 USING( customer )
WHERE t1.product = 'Pen'
AND t2.product = '19" LCD Screen'
但是,如果更改产品数,则需要更改查询。可能有更好的方法来做到这一点,但我认为这样可行。
答案 1 :(得分:4)
天真:
SELECT DISTINCT customer FROM tblname t1
WHERE EXISTS (SELECT * FROM tblname WHERE product = 'Pen' AND customer = t1.customer)
AND EXISTS (SELECT * FROM tblname WHERE product = '19" LCD Screen' AND customer = t1.customer)
但我认为一般来说,这类问题还有更多,你需要提供更多关于环境和参数范围的细节。
请注意,我并不一定主张这种方法,但是我给它(并且表示它很天真,这意味着它非常简单并且在表索引方面需要考虑很少)因为:
缺点是:
答案 2 :(得分:1)
SELECT CUSTOMER
FROM YOURTABLE yt1,YOURTABLE yt2
WHERE yt1.customer=yt2.customer
AND yt1.product='Pen'
AND yt2.product=''19" LCD Screen';
答案 3 :(得分:0)
select customer
from tablename
where product = 'Pen' AND
customer IN (select customer from tablename where product = '19" LCD Screen');