MySQL හි නිශ්චිත තීරු නම් සහිත සියලුම වගු සොයා ගන්නේ කෙසේද?


865

මට විවිධ තීරු නම් 2-3 ක් ඇති අතර එය සමස්ත ඩීබී තුළම බැලීමට අවශ්‍ය වන අතර එම තීරු ඇති සියලුම වගු ලැයිස්තුගත කරන්න. පහසු පිටපතක් තිබේද?


Answers:


1433

තීරු සහිත columnAහෝ ColumnBදත්ත ගබඩාවේ ඇති සියලුම වගු ලබා ගැනීමට YourDatabase:

SELECT DISTINCT TABLE_NAME 
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE COLUMN_NAME IN ('columnA','ColumnB')
        AND TABLE_SCHEMA='YourDatabase';

6
ChEcho - ඔබට සැමවිටම mysqldump සමඟ --skip-extended-insert සමඟ සෙල්ලම් කර ගොනුව හරහා ග්‍රහණය කර ගත හැකිය ... අපිරිසිදු නමුත් අමුතු ලෙස තෘප්තිමත් වේ :)
කෙන්

1
ChEcho, 5 ට පෙර සංස්කරණ සඳහා ව්‍යුහය mysqldump භාවිතයෙන් ගොනු කිරීම සඳහා, මගේ පිළිතුර බලන්න.
රාඩු මාරිස්

8
DATABASE()දැනට තෝරාගෙන ඇති දත්ත ගබඩාවේ සෙවීම සඳහා ඔබට නූලක් වෙනුවට භාවිතා කළ හැකිය .
ෂර්ලොක්

1
En කෙන්: ඔබේ විමසුමට තවත් පෙරණයක් එක් කිරීමට ක්‍රමයක් තිබේද? ඇත්ත වශයෙන්ම, ඩී තීරුවට නිශ්චිත අගයක් ඇති වගු තේරීම.
ෆ්‍රෙඩ් ෆ්ලෙච්

2
RedFredFLECHE මම හිතන්නේ ඒ අවස්ථාවේ දී මම ඒවා තිර රචනයකින් ලිහිල් කර සරල ලෙස තබමි
කෙන්

181
SELECT TABLE_NAME, COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME LIKE '%wild%';

13
බහු දත්ත සමුදායන් තිබේ නම්, WHERE TABLE_SCHEMA = "" පේළියක්ද එක් කරන්න.
ජෝන් මිලිකින්

1
ස්තූතියි ජෝන්, තීරුව A සහ ​​ColumnB ඇති වගු නම් ලබා ගැනීමට අවශ්‍ය නම් විමසුම කරන්නේ කෙසේද?
ජොබි ජෝයි

1
@ ජෝන්මිලිකින්: හෝ ඊට ප්‍රතිවිරුද්ධව, ඔබ දත්ත සමුදාය නොදන්නේ නම් ක්ෂේත්‍ර නාමය පමණක් නම්, එය අතහැර දමා TABLE_SCHEMAආපසු එන කට්ටලයේ ක්ෂේත්‍රවලට එකතු කර එම තීරුවේ නම අඩංගු සියලුම දත්ත සමුදායන් + වගු බලන්න.
අබෙල්

එය කියවිය යුතු නොවේ: '% wild%' හෝ = 'wild' වෙනුවට 'wild' වැනි?
ඉරෝ මාමා

1
මම මෙය උත්සාහ කළ නමුත් විමසුම සමඟ නොපෙන්වන වස්තූන් සඳහා මා ලබා ගත් සියලු ප්‍රති results ල දුටුවෙමි show tables;. මෙය එසේ වීමට හේතුව කිසිවෙකුට පැහැදිලි කළ හැකිද?
wdkrnls

47

SQL හි එක් පේළියක වඩාත් සරලව සිදු කරයි:

SELECT * FROM information_schema.columns WHERE column_name = 'column_name';

මෙහි * භාවිතා කිරීමේ අවාසි තිබේද?
ගුනී ඕසාන්

38
SELECT DISTINCT TABLE_NAME, COLUMN_NAME  
FROM INFORMATION_SCHEMA.COLUMNS  
WHERE column_name LIKE 'employee%'  
AND TABLE_SCHEMA='YourDatabase'

19

information_schema(පැරණි අනුවාද, හෝ සමහර එන්ඩීබී) නොමැති අනුවාදයකදී ඔබට වගු ව්‍යුහය අතහැර දමා තීරුව අතින් සෙවිය හැකිය.

mysqldump -h$host -u$user -p$pass --compact --no-data --all-databases > some_file.sql

දැන් some_file.sqlඔබ කැමති පෙළ සංස්කාරකය භාවිතා කරමින් තීරුවේ නම සොයන්න , නැතහොත් අකුරු ස්වල්පයක් භාවිතා කරන්න.


තීරුව සොයා ගැනීම සඳහා සරල සෙඩ් ස්ක්‍රිප්ට් එකක්, COLUMN_NAME ඔබේ වෙනුවට ආදේශ කරන්න:

sed -n '/^USE/{h};/^CREATE/{H;x;s/\nCREATE.*\n/\n/;x};/COLUMN_NAME/{x;p};' <some_file.sql
USE `DATABASE_NAME`;
CREATE TABLE `TABLE_NAME` (
  `COLUMN_NAME` varchar(10) NOT NULL,

ඔබට කුණු කූඩයට කෙලින්ම පයිප්ප දැමිය හැකි නමුත් එය ඉතා සුළුය.


12

මෙහි ප්‍රතිලෝමව සොයන අය සඳහා, එනම් නිශ්චිත තීරු නමක් අඩංගු නොවන වගු සොයමින්, මෙන්න විමසුම ...

SELECT DISTINCT TABLE_NAME FROM information_schema.columns WHERE 
TABLE_SCHEMA = 'your_db_name' AND TABLE_NAME NOT IN (SELECT DISTINCT 
TABLE_NAME FROM information_schema.columns WHERE column_name = 
'column_name' AND TABLE_SCHEMA = 'your_db_name');

අපි ඉනෝ ඩීබී හි විශේෂ ai_colතීරුව සෙමින් ක්‍රියාත්මක කිරීමට පටන් ගත් විට මෙය සැබවින්ම ප්‍රයෝජනවත් විය .


8

ඔබට " සියලු වගු ලබා ගැනීමට පමණක් " අවශ්‍ය නම්, මෙම විමසුම භාවිතා කරන්න:

SELECT TABLE_NAME 
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME like '%'
and TABLE_SCHEMA = 'tresbu_lk'

ඔබට " තීරු සමඟ සියලු වගු ලබා ගැනීමට " අවශ්‍ය නම් , මෙම විමසුම භාවිතා කරන්න:

SELECT DISTINCT TABLE_NAME, COLUMN_NAME  
FROM INFORMATION_SCHEMA.COLUMNS  
WHERE column_name LIKE '%'  
AND TABLE_SCHEMA='tresbu_lk'

6

මෙම එක් පේළි විමසුමක් භාවිතා කරන්න, අපේක්ෂිත_කොලම්_නාමය ඔබේ තීරු නාමයෙන් ආදේශ කරන්න.

SELECT TABLE_NAME FROM information_schema.columns WHERE column_name = 'desired_column_name';

4
SELECT DISTINCT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME LIKE '%city_id%' AND TABLE_SCHEMA='database'

2

Information_schema හි ඇති ගැටළුව නම් එය ඉතා මන්දගාමී විය හැකි වීමයි. SHOW විධාන භාවිතා කිරීම වේගවත් වේ.

ඔබ දත්ත සමුදාය තේරීමෙන් පසු පළමුව SHOW TABLES විමසුම යවන්න. ඉන්පසු ඔබ එක් එක් වගුව සඳහා COLUMNS පෙන්වන්න.

PHP හි එය සමාන ය

    $ res = mysqli_query ("SHOW TABLES");
    අතර ($ row = mysqli_fetch_array ($ res))
    {s rs2 = mysqli_query ("තීරු පෙන්වන්න". $ පේළිය [0]);
        අතර ($ rw2 = mysqli_fetch_array ($ rs2))
        {if ($ rw2 [0] == $ ඉලක්කය)
               ....
        }
    }


2
select distinct table_name 
from information_schema.columns 
where column_name in ('ColumnA') 
and table_schema='YourDatabase';
and table_name in 
(
 select distinct table_name 
 from information_schema.columns 
 where column_name in ('ColumnB')
 and table_schema='YourDatabase';
);

එමඟින් the පිළිගත් පිළිතුර මෙන් ColumnA හෝ ColumnB වෙනුවට ColumnA සහ ColumnB සමඟ වගු ලැබෙනු ඇත

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.