我有表产品和列表。在做下面的查询:SQL INNER JOIN DISTINCT
SELECT DISTINCT *
FROM products
INNER JOIN listings
ON products.product_number=listings.product_number
这是“搜索”功能:
WHERE products.product_number !=''
AND listings.monthly_price BETWEEN '0' AND '10'
这返回的产品清单之一的双项。为什么不是DISTINCT工作?
编辑
产品:
product_number, make, model model_number, colour, processor, battery_standby, battery_talk, camera, flash, screen_size, screen_res, memory
人数:
listing_number, featured, date, member_id, network, length, product_number, monthly_price, minutes, texts, data, image1
从本质上讲,我想通过自己的PRODUCT_NUMBER
创建结果行匹配listings
表到product
表。这是为了使手机列表网站的搜索功能更精确。
具体而言,搜索功能使用products
表进行搜索,然后使用listings
表显示有关电话列表的有用信息。
ANSWER
SELECT DISTINCT *
FROM listings
INNER JOIN products
ON products.product_number=listings.product_number
上面确实起作用;只需将桌子交换一下。我还在listings
中插入了几行,“问题”消失了。即使它没有解决,它不再发生了......不知道问题是什么。
“DISTINCT”适用于**所有**列 - 在您认为是“双重条目”的两行中,所有**列都相同? –
DISTINCT *将返回符合条件的'products'和'listings'中的所有字段的不同排列。当然,你的意思是DISTINCT products.productId,listings.listingid或类似的? – StuartLC
它会建议您选择的字段之一不同 – dougajmcdonald