簡體   English   中英

如果特定條件為真,如何在MySQL中獲取特定列的名稱?

[英]How to get a specific column's name in mySQL if a specific condition is true?

我在mySQL中有一個表,其結構如下所示,只有一行數據

info     R1    R2    R3      R4      R5         ( Columns)
------------------------------------------   
Percent  80    90    70      85      69         (Data)

我的應用程序是參加一場演講,以上述格式存儲出勤數據和總體百分比。

如果百分比低於75%,我需要檢索列名稱。 如何使用Php腳本執行此操作? 我應該使用哪個mySQL查詢?

如果要使用簡單的PHP腳本,可以檢查此SQL FIDDLE

查詢就像:

SELECT r1,'R1' FROM info WHERE R1<75
UNION ALL 
SELECT r2,'R2' FROM info WHERE R2<75
UNION ALL 
SELECT r3,'R3' FROM info WHERE R3<75
UNION ALL 
SELECT r4,'R4' FROM info WHERE R4<75
UNION ALL 
SELECT r5,'R5' FROM info WHERE R5<75

如果我了解您的需要,請嘗試以下操作:

SELECT info,
       if(R1 > 75, 'R1','-') AS 'R1>75',
       if(R2 > 75, 'R2','-') AS 'R2>75',
       if(R3 > 75, 'R3','-') AS 'R3>75',
       if(R4 > 75, 'R4','-') AS 'R4>75',
       if(R5 > 75, 'R5','-') AS 'R5>75'
FROM Table1
WHERE R1 > 75
  OR R2 > 75
  OR R3 > 75
  OR R4 > 75
  OR R5 > 75;

是sqlfiddle的鏈接。

您可以先選擇所有字段,然后僅顯示值小於75的那些數據。一種方法是:

$sql = "SELECT * FROM table_name";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
if($row[R1]<75) 
    echo "R1: " . $row[R1] . "<br />";
if($row[R2]<75) 
    echo "R2: " . $row[R2] . "<br />";
if($row[R3]<75) 
    echo "R3: " . $row[R3] . "<br />";
if($row[R4]<75) 
    echo "R4: " . $row[R4] . "<br />";
if($row[R5]<75) 
    echo "R5: " . $row[R5] . "<br />";

傳遞查詢以從百分比低於75%的數據庫中檢索數據。 因此,它將僅檢索值小於75的那些列。

更新資料

select
  case
     when R1<75 then R1
     end
     as 'R1',
  case
     when R2<75 then R2
     end
     as 'R2',
  case
     when R3<75 then R3
     end
     as 'R3',
  case
     when R4<75 then R4
     end
     as 'R4',
  case
     when R5<75 then R5
     end
     as 'R5'
from Table;

它將獲得具有列名稱的所有列(信息除外),但如果百分比大於或等於75,則列的值將為null 。根據結果,您可以根據條件獲取列名稱,然后使用ResultSetMetaData獲得列名。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM