Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

MySQL Select Rows โดยที่สองคอลัมน์ไม่มีค่าเท่ากัน?


คุณสามารถใช้ตัวดำเนินการ !=จาก MySQL สำหรับสิ่งนี้ ไวยากรณ์มีดังนี้:

SELECT *FROM yourTableNameWHERE yourColumnName1 !=yourColumnName2OR (yourColumnName1 IS NULL and yourColumnName2IS NOT NULL)OR (yourColumnName2 IS NULL and yourColumnName1 IS NOT NULL);

เพื่อให้เข้าใจไวยากรณ์ข้างต้น ให้เราสร้างตาราง แบบสอบถามเพื่อสร้างตารางมีดังนี้:

mysql> สร้างตาราง selectTwoColumns -> ( -> Id int ไม่ใช่ NULL AUTO_INCREMENT, -> FirstNumber int, -> SecondNumber int, -> PRIMARY KEY(Id) -> ); แบบสอบถามตกลง 0 แถวได้รับผลกระทบ (0.87 วินาที) 

แทรกบางระเบียนในตารางโดยใช้คำสั่งแทรก แบบสอบถามมีดังนี้:

mysql> แทรกลงในค่า selectTwoColumns(FirstNumber,SecondNumber) (10,20);Query OK, 1 แถวได้รับผลกระทบ (0.29 วินาที)mysql> แทรกลงใน selectTwoColumns (FirstNumber,SecondNumber) ค่า (30,40); Query OK, 1 แถวได้รับผลกระทบ (0.16 วินาที) mysql> แทรกลงในค่า selectTwoColumns (FirstNumber,SecondNumber) (20,20); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.15 วินาที) mysql> แทรกลงใน selectTwoColumns (FirstNumber, SecondNumber) ค่า (50,60);แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.18 วินาที)mysql> แทรกลงในค่า selectTwoColumns (FirstNumber,SecondNumber) (50,50); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.17 วินาที) mysql> แทรกลงในค่า selectTwoColumns (FirstNumber, SecondNumber) ( 70,NULL);ตกลง, 1 แถวได้รับผลกระทบ (0.14 วินาที)

แสดงระเบียนทั้งหมดจากตารางโดยใช้คำสั่ง select แบบสอบถามมีดังนี้:

mysql> เลือก *จาก selectTwoColumns;

ต่อไปนี้เป็นผลลัพธ์:

<ก่อนหน้า>+----+-------------+--------------+| รหัส | หมายเลขแรก | SecondNumber |+----+-------------+-------------+| 1 | 10 | 20 || 2 | 30 | 40 || 3 | 20 | 20 || 4 | 50 | 60 || 5 | 50 | 50 || 6 | 70 | NULL |+----+-------------+--------------+6 แถวในชุด (0.00 วินาที)

ต่อไปนี้คือข้อความค้นหาเพื่อเลือกแถวที่ 2 คอลัมน์ไม่มีค่าเท่ากัน:

mysql> เลือก *จาก selectTwoColumns -> โดยที่ FirstNumber!=SecondNumber -> OR (FirstNumber เป็น NULL และ SecondNumber ไม่ใช่ NULL) -> OR (SecondNumber เป็น NULL และ FirstNumber ไม่ใช่ NULL);

ต่อไปนี้เป็นผลลัพธ์:

<ก่อนหน้า>+----+-------------+--------------+| รหัส | หมายเลขแรก | SecondNumber |+----+-------------+-------------+| 1 | 10 | 20 || 2 | 30 | 40 || 4 | 50 | 60 || 6 | 70 | NULL |+----+-------------+--------------+4 แถวในชุด (0.00 วินาที)