簡體   English   中英

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM