是否可以选择数据库表的某些元素?

时间:2014-02-09 05:33:56

标签: php mysql sql

例如:我有一个表名tbl_admin,我在该表中有很多表元素。

喜欢(id,fname,lname,contact_info,email,ip,date,status等等,最多20个元素)。

现在我只需要从该表中排除3个元素(fname,lname和contact_info),然后选择所有其他元素。这可以通过使用mysql查询吗?

如果可能,请帮助我。谢谢,

5 个答案:

答案 0 :(得分:1)

简答 您不能明确排除,但您可以通过仅选择其他列来隐式

SELECT
    ID,
    EMAIL,
    IP,
    DATE,
    STATUS
FROM tbl_admin

长答案 事实证明我对简短回答是错误的,技术上有一种方式如问题here所示。

要在PHP中执行此操作,我建议在MySQL数据库中创建一个封装SQL的视图。然后你只需从那个视图中选择*。

或者,您可以创建一个存储过程,并传入要过滤掉的列的名称。

答案 1 :(得分:0)

Select fname,sname,contact from table_admin

答案 2 :(得分:0)

是的,所以你会有这样的事情:

SELECT
    id,
    fname,
    lanem
FROM
    tbl_admin

您只需指定它们是什么以及按什么顺序排列。而不是使用*以默认顺序获取所有记录(列)。

修改

SET @sql = CONCAT('SELECT ', (SELECT REPLACE(GROUP_CONCAT(COLUMN_NAME), '<columns_to_omit>,', '') FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '<table>' AND TABLE_SCHEMA = '<database>'), ' FROM <table>');

PREPARE stmt1 FROM @sql;
EXECUTE stmt1;

实际上,我刚从其他人的帖子中得到它,所以所有的积分都归他所有。 HERE

答案 3 :(得分:0)

最新答案

Mahomedalid

中的Select all columns except one in MySQL?答案
SET @sql = CONCAT('SELECT ', (SELECT REPLACE(GROUP_CONCAT(COLUMN_NAME), '<columns_to_omit>,', '') FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '<table>' AND TABLE_SCHEMA = '<database>'), ' FROM <table>');

PREPARE stmt1 FROM @sql;
EXECUTE stmt1;

根据您的情况,将<columns_to_omit>替换为fname,lname,contact_info

旧答案

从表中检索特定列值的语法是

SELECT column_name(s)
FROM table_name

可以使用SELECT *代替SELECT column_name(s)

来检索所有列

如果您要将问题指向某种特定语言,例如 PHP ,那么语法可以是这样的

<?php
$con=mysqli_connect("localhost","username","password","database");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

$result = mysqli_query($con,"SELECT fname,lname,contact_info FROM tbl_admin");?>

答案 4 :(得分:0)

尝试:

$result = mysql_query("SHOW COLUMNS FROM tbl_admin");

if (mysql_num_rows($result) > 0) {
    while ($row = mysql_fetch_assoc($result)) {
        $columns[] = $row['Field'];
    }
}
//fill all columns here that you want to exclude
$columns_to_exclude = array('fname','lname','contact_info'); 
$sql = "SELECT (";
foreach($columns as $ind=>$val){

    if(!in_array($val,$columns_to_exclude))
    {
        $sql .= $val.", ";
    }
}
$sql = rtrim($sql,", ");
$sql .= ") FROM tbl_admin;";

echo $sql;