Exclude two column from in select statement php [duplicate] - mysql

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

How to pivot columns to rows in MySQL for N number of columns without using Union all

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;

How to query through all varchar columns for a specific char [duplicate]

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

How to select a table in query as variable in mysql? [duplicate]

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.

MySQL select query [duplicate]

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;

Select Statement For my Question

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>