สอบถามการ query ข้อมูลที่ซ้ำ แสดงเป็นค่าเดียว ที่เป็นค่าล่าสุด

เกี่ยวกับ ปัญหาการใช้งาน การติดตั้ง ฐานข้อมูล MySql Oracle MSSQL ect...
การเขียน คำสั่ง SQL เพื่อดึกข้อมูล บอร์ดนี้ควรระบุโครงสร้างตารางของท่านในคำถามด้วยนะ

Moderator: mindphp

ภาพประจำตัวสมาชิก
WKsoft
PHP Super Hero Member
PHP Super Hero Member
โพสต์: 872
ลงทะเบียนเมื่อ: 30/11/2021 9:35 am

สอบถามการ query ข้อมูลที่ซ้ำ แสดงเป็นค่าเดียว ที่เป็นค่าล่าสุด

โพสต์ที่ยังไม่ได้อ่าน โดย WKsoft »

SQL - Database-1.png
SQL - Database-1.png (29.06 KiB) Viewed 2396 times
จะเป็นตารางข้อมูลที่จะคิวรี่ข้อมูล

สิ่งที่ต้องการคือ คิวรี่keyword มาแสดง โดยแสดงเรียงจากระยะเวลาล่าสุดไปเก่าสุด
และค่าที่ซ้ำกันให้แสดงเป็น ค่าเดียว เป็นค่าที่ใส่เข้าไปล่าสุด

เช่น จากฐานข้อมูล คิวรี่ข้อมูล keyword มาได้ 5 ค่า

โค้ด: เลือกทั้งหมด

SELECT  keyword,id FROM suggest_search
WHERE `keyword`  LIKE  '%%' AND user_id = 2
ORDER BY  keyword_record_date  DESC , id  DESC;
ได้ดังนี้
SQL - Database-1.png
SQL - Database-1.png (20.51 KiB) Viewed 2396 times
ซึ่งคำที่ซ้ำกันคือ market ต้องแสดงแค่ค่าเดียวคือ market ที่ id = 5 เพราะเป็นค่าที่ใส่เข้ามาล่าสุด แต่จากที่ได้ลองใช้

คำสั่ง DISTINCT

โค้ด: เลือกทั้งหมด

SELECT  DISTINCT keyword FROM suggest_search
WHERE `keyword`  LIKE  '%%' AND user_id = 2
ORDER BY  keyword_record_date  DESC , id  DESC;
ผลที่ได้
SQL - Database-1.png
SQL - Database-1.png (12.43 KiB) Viewed 2396 times
ผลที่ได้คาดว่าจะยังไม่ใช่ที่ต้องการเพราะ market ที่แสดง ไปอยู่ที่ด้านล่างสุด คาดว่าจะเป็น id=1 ไม่ใช่ id=5


คำสั่ง GROUP BY

โค้ด: เลือกทั้งหมด

SELECT   id,keyword FROM suggest_search
WHERE `keyword`  LIKE  '%%' AND user_id = 2
GROUP BY keyword
ORDER BY  keyword_record_date  DESC , id  DESC;
ผลที่ได้
SQL - Database-1.png
SQL - Database-1.png (13.52 KiB) Viewed 2396 times
ยังไม่ใช่ที่ต้องการเพราะ ได้ market ที่ id = 1 มาแสดง

อยากทราบว่าต้องเขียนคำสั่งคิวรี่อย่างไรให้ แสดงค่าซ้ำที่เป็นตัวล่าสุดมาแสดง
ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 41232
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

Re: สอบถามการ query ข้อมูลที่ซ้ำ แสดงเป็นค่าเดียว ที่เป็นค่าล่าสุด

โพสต์ที่ยังไม่ได้อ่าน โดย mindphp »

ลองใช้ตัวนี้ควบคู่ครับ
viewtopic.php?f=74&t=18554
โดยไม่ต้อง group
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 41232
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

Re: สอบถามการ query ข้อมูลที่ซ้ำ แสดงเป็นค่าเดียว ที่เป็นค่าล่าสุด

โพสต์ที่ยังไม่ได้อ่าน โดย mindphp »

ใช้ได้ไหมครับ ติดปัญหาอะไรหรือเปล่า
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
ภาพประจำตัวสมาชิก
WKsoft
PHP Super Hero Member
PHP Super Hero Member
โพสต์: 872
ลงทะเบียนเมื่อ: 30/11/2021 9:35 am

Re: สอบถามการ query ข้อมูลที่ซ้ำ แสดงเป็นค่าเดียว ที่เป็นค่าล่าสุด

โพสต์ที่ยังไม่ได้อ่าน โดย WKsoft »

mindphp เขียน: 25/01/2022 8:25 pm ใช้ได้ไหมครับ ติดปัญหาอะไรหรือเปล่า
แก้ไขได้ตามที่ต้องการแล้วครับ ใช้คำสั่งนี้

โค้ด: เลือกทั้งหมด

SELECT  keyword,max(keyword_record_date) FROM  suggest_search
WHERE user_id = 2
group by keyword 
ORDER BY  max(keyword_record_date)  DESC;
ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 41232
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

Re: สอบถามการ query ข้อมูลที่ซ้ำ แสดงเป็นค่าเดียว ที่เป็นค่าล่าสุด

โพสต์ที่ยังไม่ได้อ่าน โดย mindphp »

ใช้ group จะทำให้ดึงข้อมูลมาช้า
ฟังก์ชั่น max ทำงานซ้ำซ้อน ดึงข้อมูลมาช้า
ทำไมต้องใช้ ฟังก์ชั่น max เข้ามาจัดการเรื่องการจัดเรียงข้อมูล ในเมื่อตารางมี id เป็น auto อยู่แล้ว
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
ภาพประจำตัวสมาชิก
WKsoft
PHP Super Hero Member
PHP Super Hero Member
โพสต์: 872
ลงทะเบียนเมื่อ: 30/11/2021 9:35 am

Re: สอบถามการ query ข้อมูลที่ซ้ำ แสดงเป็นค่าเดียว ที่เป็นค่าล่าสุด

โพสต์ที่ยังไม่ได้อ่าน โดย WKsoft »

WKsoft เขียน: 26/01/2022 11:13 am
แก้ไขได้ตามที่ต้องการแล้วครับ ใช้คำสั่งนี้

โค้ด: เลือกทั้งหมด

SELECT  keyword,max(keyword_record_date) FROM  suggest_search
WHERE user_id = 2
group by keyword 
ORDER BY  max(keyword_record_date)  DESC;
จากที่ไปลองมาใหม่ ลองใช้คำสั่งนี้ ได้ผลลัพธ์ออกมาตรงกันครับ

โค้ด: เลือกทั้งหมด

SELECT DISTINCT   keyword FROM  suggest_search
WHERE user_id = 2
ORDER BY  id DESC;
บุคคลทั่วไป

Re: สอบถามการ query ข้อมูลที่ซ้ำ แสดงเป็นค่าเดียว ที่เป็นค่าล่าสุด

โพสต์ที่ยังไม่ได้อ่าน โดย บุคคลทั่วไป »

แบบหลังดูง่ายและตรงไปตรงมาดีนะ
ตอบกลับโพส
  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

ผู้ใช้งานขณะนี้

สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 64