![](/img/trans.png)
[英]How to Do an INNER JOIN with SELECT DISTINCT in MySQL?
[英]MySQL Distinct Inner Join
請原諒我對此知識不足。 我對PHP和MySQL查詢的經驗有限。 我可以進行一些基本查詢,但是這是我需要修改的查詢,這使我感到困惑。
我有一個查詢,該查詢會提取分配了獎勵的產品的所有數據。 但是,如果一項產品獲得了多個獎項,那么它將多次顯示該產品。 理想情況下,我希望該產品展示一次。
我希望將DISTINCT或UNIQUE值應用於查詢,但是查詢的構造方式似乎沒有任何作用。
原始查詢如下:
<?php
$get_awards = $wpdb->get_results("
SELECT *
FROM wp_posts
WHERE post_type = 'award'
AND post_status = 'publish'
AND YEAR(CAST(post_date AS DATE))=2009
GROUP
BY post_title
ORDER
BY post_date DESC
");
foreach ($get_awards as $award) {
$get_products = $wpdb->get_results("SELECT * FROM wp_posts INNER JOIN wp_postmeta ON wp_posts.ID = wp_postmeta.post_id WHERE post_type = 'ice-cream' AND post_status = 'publish' AND meta_key = 'awards' AND meta_value LIKE '%''".$award->ID."''%' OR post_type = 'frozen-yoghurt' AND post_status = 'publish' AND meta_key = 'awards' AND meta_value LIKE '%''".$award->ID."''%' OR post_type = 'sorbet' AND post_status = 'publish' AND meta_key = 'awards' AND meta_value LIKE '%''".$award->ID."''%'");
foreach ($get_products as $product) { ?>
我試過幾個版本,將SELECT *更改為SELECT DISTINCT等,但沒有任何樂趣。 有誰願意給我一些建議嗎?
如果* *選擇所有列,則區分符無用
如果您需要一個不同的結果,則應該明確選擇僅要獲得不同值的列
Group by is for aggreagtion function and is not necessary for distinct clause
因此,假設您需要的列是col1,col2和col3,則只應使用select
SELECT DISTINCT col1, col2, col2
FROM wp_posts
WHERE post_type = 'award'
AND post_status = 'publish'
AND YEAR(CAST(post_date AS DATE))=2009
GROUP BY post_title
ORDER BY post_date DESC
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.