คุณสามารถรับการรวมกันของ 2 ฟิลด์ที่แตกต่างกันในตารางฐานข้อมูลได้หรือไม่? ถ้าเป็นเช่นนั้นคุณสามารถให้ตัวอย่าง SQL
คุณสามารถรับการรวมกันของ 2 ฟิลด์ที่แตกต่างกันในตารางฐานข้อมูลได้หรือไม่? ถ้าเป็นเช่นนั้นคุณสามารถให้ตัวอย่าง SQL
คำตอบ:
วิธีง่ายๆ:
select distinct c1, c2 from t
หรือ
select c1, c2, count(*)
from t
group by c1, c2
Operand should contain 1 column(s)
ข้อผิดพลาดปัญหาของคุณคือคุณอาจกำลังทำอยู่select distinct(c1, c2) from t
และคุณไม่ได้รับอนุญาตให้ใช้วงเล็บที่นี่ นั่นคือสิ่งที่ฉันมาที่นี่
หากคุณต้องการค่าที่แตกต่างจากสองฟิลด์เท่านั้นรวมถึงส่งคืนฟิลด์อื่นด้วยฟิลด์อื่น ๆ จะต้องมีการรวมข้อมูลบางอย่าง (sum, min, max ฯลฯ ) และคอลัมน์สองคอลัมน์ที่คุณต้องการให้แตกต่างกันจะต้องปรากฏใน จัดกลุ่มตามข้อ ไม่งั้นก็เป็นอย่างที่ Decker บอก
คุณจะได้ผลลัพธ์ที่แตกต่างกันโดยใช้สองคอลัมน์ด้านล่าง SQL:
SELECT COUNT(*) FROM (SELECT DISTINCT c1, c2 FROM [TableEntity]) TE
หากคุณยังต้องการจัดกลุ่มตามคอลัมน์เดียว (ตามที่ฉันต้องการ) คุณสามารถซ้อนคิวรีได้:
select c1, count(*) from (select distinct c1, c2 from t) group by c1
แบ่งปันความคิดโง่ ๆ ของฉัน:
บางทีฉันสามารถเลือกเฉพาะใน c1 แต่ไม่สามารถเลือกได้ใน c2 ดังนั้นไวยากรณ์อาจอยู่select ([distinct] col)+
ที่distinct
เป็นตัวกำหนดคุณสมบัติสำหรับแต่ละคอลัมน์
แต่หลังจากที่คิดว่าผมพบว่าแตกต่างกันเพียงหนึ่งคอลัมน์เป็นเรื่องไร้สาระ ใช้ความสัมพันธ์ต่อไปนี้:
| A | B
__________
1| 1 | 2
2| 1 | 1
ถ้าเป็นเราselect (distinct A), B
แล้วอะไรคือสิ่งที่เหมาะสมB
สำหรับA = 1
?
ดังนั้นจึงdistinct
เป็นคุณสมบัติสำหรับไฟล์statement
.