 |
ต้องการดึงข้อมูลที่ไม่ซ้ำกัน จาก 2 ตารางที่ไม่ได้เชื่อมต่อกัน |
|
 |
|
|
 |
 |
|
select ทีละ ตาราง แล้วนำมา union กัน
เลือก a ที่ไม่มี ใน b
union all
เลือก b ที่ไม่มีใน a
|
 |
 |
 |
 |
Date :
2017-06-08 09:34:16 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบคุณมากครับ สมมุติว่าตาราง A กับตาราง B มีข้อมูลที่ซ้ำกันคือ 'ccc' ในฟิลด์ตาราง A ลักษณะการเก็บข้อมูลตาราง B เป็นแบบ aaa,bbb,ccc มันทำให้ ฟิลเตอร์ข้อมูลไม่ได้อ่าครับ มีวิธีไหมครับ หรือต้องเขียนอย่างอื่นแทน
|
 |
 |
 |
 |
Date :
2017-06-08 10:29:22 |
By :
Jamemonth |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (SQL)
select a.*
from a,b
where concat(',', b.key_list,',') like concat('%,',a.key,',%')
เพิ่มเติมคำตอบ จากคำถาม ใน pm
concat() เป็น function รวม string เข้าด้วยกัน
concat(',', b.key_list,',') จะได้ value สำหรับนำไปเปรียบเทียบ ',aaa,bbb,ccc,' เป็นการเพิ่ม คอมม่าหัวท้ายประโยค
เพื่อนำไปค้นหาได้ตั้งแต่ element ต้น จน element สุดท้าย โดยเพิ่ม คอมม่า ห้วยท้ายคำค้น
คือ concat('%,',a.key,',%') จะได้ value สำหรับค้นหาคือ '%,ccc,%'
สรุปคือ
where ',aaa,bbb,ccc,' like '%,ccc,%'
ถ้าเราไม่เพิ่ม คอมม่า หัวท้าย เราก็จะหาอะไรมาจำกัด แยกคำออกจากกันไม่ได้
ปล. ตอบใน pm รู้แค่คนเดียว ตอบตรงนี้แล้วกัน บางคนที่ไม่รู้จะได้รู้ด้วย
|
ประวัติการแก้ไข 2017-06-08 17:27:32
 |
 |
 |
 |
Date :
2017-06-08 10:44:20 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|