เมื่อต้องการค้นหาตารางที่มี ทั้งสองคอลัมน์ที่ระบุ (เช่น Id และ Name) พร้อมกัน ให้สืบค้นจาก information_schema.columns กรองด้วย IN() แล้ว GROUP BY table_name HAVING COUNT(*) = 2 (หรือจำนวนคอลัมน์ที่ต้องการ)
คำสั่งค้นหาตารางที่มีคอลัมน์ Id และ Name ทั้งคู่
mysql> select table_name as TableNameFromWebDatabase
-> from information_schema.columns
-> where column_name IN ('Id', 'Name')
-> group by table_name
-> having count(*) = 2;
หมายเหตุ: ตัวอย่างเดิมใช้ HAVING COUNT(*) = 3 ซึ่งอาจผิด (ควรเป็น 2 สำหรับ 2 คอลัมน์) ผลลัพธ์อาจรวมตารางที่มีคอลัมน์ซ้ำหรือคอลัมน์เพิ่มเติม
ผลลัพธ์ตัวอย่าง
+--------------------------+ | TableNameFromWebDatabase | +--------------------------+ | student | | distinctdemo | | secondtable | | groupconcatenatedemo | | indemo | | ifnulldemo | | demotable211 | | demotable212 | | demotable223 | | demotable233 | | demotable251 | | demotable255 | +--------------------------+
ตรวจสอบโครงสร้างตารางหนึ่ง (demotable233)
mysql> desc demotable233;
+-------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+----------------+ | Id | int(11) | NO | PRI | NULL | auto_increment | | Name | varchar(20) | YES | | NULL | | +-------+-------------+------+-----+---------+----------------+
คำอธิบาย:
information_schema.columnsเก็บข้อมูลเมตาของคอลัมน์ทุกตารางWHERE column_name IN ('Id','Name')กรองเฉพาะคอลัมน์ที่ต้องการGROUP BY table_nameจัดกลุ่มตามตารางHAVING COUNT(*) = 2ต้องมีทั้ง 2 คอลัมน์ (นับ distinct column_name ดีกว่า)- วิธีแม่นยำกว่า:
HAVING COUNT(DISTINCT column_name) = 2