SQL แตกต่างกันสำหรับ 2 ฟิลด์ในฐานข้อมูล


84

คุณสามารถรับการรวมกันของ 2 ฟิลด์ที่แตกต่างกันในตารางฐานข้อมูลได้หรือไม่? ถ้าเป็นเช่นนั้นคุณสามารถให้ตัวอย่าง SQL

คำตอบ:


129

วิธีง่ายๆ:

select distinct c1, c2 from t

หรือ

select c1, c2, count(*)
from t
group by c1, c2

ขึ้นอยู่กับข้อมูลการจัดกลุ่มจะช้ากว่าที่แตกต่างกัน
noizer

5
สำหรับผู้ที่เห็นOperand should contain 1 column(s)ข้อผิดพลาดปัญหาของคุณคือคุณอาจกำลังทำอยู่select distinct(c1, c2) from tและคุณไม่ได้รับอนุญาตให้ใช้วงเล็บที่นี่ นั่นคือสิ่งที่ฉันมาที่นี่
BookOfGreg

16

หากคุณต้องการค่าที่แตกต่างจากสองฟิลด์เท่านั้นรวมถึงส่งคืนฟิลด์อื่นด้วยฟิลด์อื่น ๆ จะต้องมีการรวมข้อมูลบางอย่าง (sum, min, max ฯลฯ ) และคอลัมน์สองคอลัมน์ที่คุณต้องการให้แตกต่างกันจะต้องปรากฏใน จัดกลุ่มตามข้อ ไม่งั้นก็เป็นอย่างที่ Decker บอก


7

คุณจะได้ผลลัพธ์ที่แตกต่างกันโดยใช้สองคอลัมน์ด้านล่าง SQL:

SELECT COUNT(*) FROM (SELECT DISTINCT c1, c2 FROM [TableEntity]) TE

5

หากคุณยังต้องการจัดกลุ่มตามคอลัมน์เดียว (ตามที่ฉันต้องการ) คุณสามารถซ้อนคิวรีได้:

select c1, count(*) from (select distinct c1, c2 from t) group by c1

3

แบ่งปันความคิดโง่ ๆ ของฉัน:

บางทีฉันสามารถเลือกเฉพาะใน c1 แต่ไม่สามารถเลือกได้ใน c2 ดังนั้นไวยากรณ์อาจอยู่select ([distinct] col)+ที่distinctเป็นตัวกำหนดคุณสมบัติสำหรับแต่ละคอลัมน์

แต่หลังจากที่คิดว่าผมพบว่าแตกต่างกันเพียงหนึ่งคอลัมน์เป็นเรื่องไร้สาระ ใช้ความสัมพันธ์ต่อไปนี้:

   | A | B
__________
  1| 1 | 2
  2| 1 | 1

ถ้าเป็นเราselect (distinct A), Bแล้วอะไรคือสิ่งที่เหมาะสมBสำหรับA = 1?

ดังนั้นจึงdistinctเป็นคุณสมบัติสำหรับไฟล์statement.

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.