2016-06-30 4 views
-3

                      i eine Abfrage will einige Felder auf der Webseite aus einer Tabelle angezeigt werden, aber es gibt große Anzahl der Felder in dieser Tabelle, aber ich möchte diese Art von Abfrage, dass außer einigen Feldern und Anzeigen aller Daten der verbleibenden Felder auf der Webseite. Ich habe eine Tabelle mit 50 Feldern,
Eine Abfrage mit den Feldern, die nicht innerhalb einer Tabelle von riesigen Feldern erhalten benötigen

+ -------- + -------- + -------- + ------ ---- +       + ---------- +
|   Col1   |   Col2   |   Col3   |   Col4   | ---- |   Col50   |
| --------- | --------- | ---------- | ----------- |           | ----------- |
|                   |                         |                     |                         | ---- |                       |
|                     |                         |                     |                         | ---- |                       |
+ ------- + -------- + -------- + ---------- +       + ------- --- +

aber ich möchte nur 48 Felder auf dieser Seite anzeigen. dann jede Abfrage, die außer diesen 2 Feldern den Namen (Col49 und Col50) enthält, die nicht benötigt werden, und verbleibende Daten anzeigen. Also statt zu schreiben:
SELECT Col1, Col2, Col3, Col4, ...Col48 FROM Tabelle;
jede alternative Möglichkeit, so zu schreiben
SELECT * - (Col49, Col50) FROM Tabelle;

+0

können Sie weitere Details hinzufügen, ist es nicht viel klar –

+0

Ich frage, dass statt alle 18 Felder Name in dieser Abfrage zu schreiben, haben Sie eine alternative Möglichkeit, dass nur 2 Felder Name, die nicht erforderlich sind aus 20 Felder zu schreiben . –

+0

ist es in Ordnung? @mahesh –

Antwort

0

Der beste Weg, dies zu lösen, ist mit Blick Sie Ansicht erstellen können diese 18 Spalten und Daten abzurufen

Beispiel

mysql> SELECT * FROM calls; 
+----+------------+---------+ 
| id | date  | user_id | 
+----+------------+---------+ 
| 1 | 2016-06-22 |  1 | 
| 2 | 2016-06-22 | NULL | 
| 3 | 2016-06-22 | NULL | 
| 4 | 2016-06-23 |  2 | 
| 5 | 2016-06-23 |  1 | 
| 6 | 2016-06-23 |  1 | 
| 7 | 2016-06-23 | NULL | 
+----+------------+---------+ 
7 rows in set (0.06 sec) 

mysql> CREATE VIEW C_VIEW AS 
    ->  SELECT id,date from calls; 
Query OK, 0 rows affected (0.20 sec) 

mysql> select * from C_VIEW; 
+----+------------+ 
| id | date  | 
+----+------------+ 
| 1 | 2016-06-22 | 
| 2 | 2016-06-22 | 
| 3 | 2016-06-22 | 
| 4 | 2016-06-23 | 
| 5 | 2016-06-23 | 
| 6 | 2016-06-23 | 
| 7 | 2016-06-23 | 
+----+------------+ 
7 rows in set (0.00 sec) 
+0

Bitte überprüfen Sie dies und lassen Sie mich wissen –

+0

ist ziemlich cool, aber nicht akzeptabel für überall, weil ich An verschiedenen Orten müssen unterschiedliche Felder benötigt werden, zu dieser Zeit hat diese Sichtweise keinen Sinn. –

+0

ja das ist eine kleine hack kind lösung –

0

Statt select * from ... zu erwähnen sind die Spaltennamen in der Abfrage .. select col1, col2,...col18 from ..

+0

Wenn ich 50 Felder habe und ich nur 48 Felder anzeigen möchte, dann muss ich alle 48 Felder Name eins nach dem anderen schreiben? Hast du irgendeinen alternativen Weg? –

+0

Erstellen Sie eine Ansicht mit den gewünschten Spalten und beziehen Sie sich auf diese Ansicht. –

+0

ist es in Ordnung? @harika –

0

Diese Antwort nach der Leistung für Sie in Frage stellen. Fügen Sie Ihrer Frage weitere Details hinzu, um eine klarere Antwort zu erhalten. Sie müssen Spaltennamen übergeben, um Daten nur für diese Spalten zu erhalten. z.B.

table_name = dummy_tab

col_1 | col_2 | col_3 | col_4 
-------------------------------- 
    1 | John | 20 | [email protected] 
-------------------------------- 
    2 | Doe | 21 | [email protected] 

... 

können Sie tun:

SELECT col_1, col_2 FROM dummy_tab; 

Diese geben:

col_1 | col_2 
--------------- 
    1 | John 
--------------- 
    2 | Doe 
0

Ein bisschen nervig, aber Sie können durch Abfragen information_schema und mit Ausnahme der Felder, die Sie nicht wollen, zum Beispiel nach Namen oder Position Aufwand und Fehler reduzieren.

CREATE TABLE `dates` (
    `id` INT(11) NULL DEFAULT NULL, 
    `dte` DATE NULL DEFAULT NULL, 
    `CalMonth` INT(11) NULL DEFAULT NULL, 
    `CalMonthDescLong` VARCHAR(10) NULL DEFAULT NULL, 
    `CalMonthDescShort` VARCHAR(10) NULL DEFAULT NULL, 
    `calQtr` INT(11) NULL DEFAULT NULL 
) 
COLLATE='latin1_swedish_ci' 
ENGINE=InnoDB 
; 
use information_schema; 
select concat('`',REPLACE(t.NAME,'/dates','.'), '`',replace(T.NAME,'sandbox/',''),c.NAME,'`',',') 
from INNODB_SYS_TABLES t 
join INNODB_SYS_COLUMNS c on c.TABLE_ID = t.TABLE_ID 
where t.NAME like ('sandbox%') 
    and t.name like ('%dates') 
    and pos not in(1,4) 

Beste Ausführung von der Befehlszeile mit der Ausgabe piped zu einer Textdatei.

Verwandte Themen