This question already has answers here:
Exclude a column using SELECT * [except columnA] FROM tableA?
(47 answers)
Closed 7 years ago.
I am having a table that contains 61 columns.
In the select statement I want to fetch all the columns except two of them.
How can I do it?
Here is the code that fetches data from table:
function hotelfeature($id)
{
global $conn;
$selFeature = "select * from hotelpropertyoptioninfo where Hotel_id = " .$id;
$resultFeature = mysql_query($selFeature,$conn);
$rowFeature = mysql_fetch_assoc($resultFeature);
return $rowFeature;
}
SET #SQL = CONCAT('SELECT ', (SELECT GROUP_CONCAT(COLUMN_NAME) FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = '<table>' AND COLUMN_NAME NOT IN ('field1','Field2')),
' FROM <table>');
PREPARE stmt1 FROM #SQL;
EXECUTE stmt1;
Related
I already went through the details in the link (Mysql Convert Column to row (Pivot table )). As the number of Columns is high and using union all on all of them would be time taking. I decided to use the last resolution in the given link. I was able to run the query the results were:
The issue is the acct getting included as data and also I want to create a table from the result . So Can these entries be excluded and how can I create a table from the results? (new to SQL)
The Code:
SET SESSION group_concat_max_len = 92160;
SET #target_schema='rd';
SET #target_table='pbc_gl';
SET #target_where='`acct`';
SELECT
GROUP_CONCAT(qry SEPARATOR ' UNION ALL ')
INTO #sql
FROM (
SELECT
CONCAT('SELECT `acct`,', QUOTE(COLUMN_NAME), ' AS `Business_Unit`,`', COLUMN_NAME, '` AS `value` FROM `', #target_table, '` WHERE ', #target_where) qry
FROM (
SELECT `COLUMN_NAME`
FROM `INFORMATION_SCHEMA`.`COLUMNS`
WHERE `TABLE_SCHEMA`=#target_schema
AND `TABLE_NAME`=#target_table
) AS `A`
) AS `B` ;
PREPARE s FROM #sql;
EXECUTE s;
DEALLOCATE PREPARE s;
This question already has answers here:
Search text in fields in every table of a MySQL database
(27 answers)
Closed 3 years ago.
I have to search for the char ' - ' in all columns (and lines) of my table. Currently I have this:
SELECT *
FROM `my_table`
WHERE (
SELECT C.COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS C
WHERE C.TABLE_NAME = 'my_table'
) LIKE('%-%');
But, of course, this doesn't work because of the multiple values returned by the subquery. Any ideas of how to achieve this?
You can get the query with a SELECT on INFORMATION_SCHEMA.COLUMNS and execute the query with a Prepared SQL Statement on MySQL:
SET #query = '';
SELECT CONCAT('SELECT * FROM table_name WHERE ',GROUP_CONCAT(C.COLUMN_NAME SEPARATOR ' LIKE ''%-%'' OR '), ' LIKE ''%-%''') FROM INFORMATION_SCHEMA.COLUMNS C WHERE C.TABLE_NAME = 'table_name' INTO #query;
PREPARE stmtSearch FROM #query;
EXECUTE stmtSearch;
DEALLOCATE PREPARE stmtSearch;
demo on dbfiddle.uk
This question already has an answer here:
How to select from MySQL where Table name is Variable
(1 answer)
Closed 6 years ago.
I have mutliple tables with same name with added date in the last as abc_2016_09.
Now How can i call this mentioned statement, pls help.
SET #var = concat('ABC_table','_',date_format(curdate(), '%Y'),'_',date_format(curdate(), '%m'));
AND THEN
select * from #var
error code 1069 is coming.
SET #var = concat('abc_table','_',date_format(curdate(), '%Y_%m'));
SET #statment = concat('select * from ', #var);
PREPARE stmt FROM #statment;
EXECUTE stmt;
Check it in mysql workbench, It does not return row in mariadb.
This question already has answers here:
Closed 11 years ago.
Possible Duplicate:
MySQL wildcard in select …
SELECT icon_* FROM images WHERE 1
I have three fields, icon_small, icon_big, and icon_large. How do I get all three without manually specifying them?
As far as I know, you can't. You will have to manually specify them.
(See the duplicate)
You have to specify them in your SELECT, but you can select a list of columns (which can then only be used in dynamic SQL) by doing:
select column_name from information_schema.columns
where table_schema = database()
and table_name = 'mytesttable'
and column_name like 'icon_%'
set #qry = (select concat('select ',group_concat(column_name), ' from ' ,table_name) from
information_schema.columns
where table_schema = database()
and table_name = 'your_table_name'
and column_name like 'icon_%');
prepare stmt from #qry;
execute stmt;
deallocate prepare stmt;
I have 10 fields in my table but i need 8 fields when i select , i dont want to specify select 1,2,3,4,5,6,7,8 from........ ,
Any easy way to get the 8 fields (Other hand i dont want to select primary,unique key fields)
see the answer in this :
Select all columns except one in MySQL?
Actually there is a way, you need to have permissions of course for doing this ...
SET #sql = CONCAT('SELECT ', (SELECT REPLACE(GROUP_CONCAT(COLUMN_NAME), '<columns_to_delete>,', '') FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '<table>' AND TABLE_SCHEMA = '<database>'), ' FROM <table>');
PREPARE stmt1 FROM #sql;
EXECUTE stmt1;
Replacing <table>, <database> and <columns_to_delete>