有沒有可能在SQL查詢中的SELECT CASE的THEN之後編寫具有select語句的查詢?邏輯 例如何在SQL查詢中SELECT CASE的THEN之後執行SELECT語句?
SELECT Id, CASE WHEN level=2 THEN
(select something here)
else 0 end as Grade FROM CLASS
有沒有可能在SQL查詢中的SELECT CASE的THEN之後編寫具有select語句的查詢?邏輯 例如何在SQL查詢中SELECT CASE的THEN之後執行SELECT語句?
SELECT Id, CASE WHEN level=2 THEN
(select something here)
else 0 end as Grade FROM CLASS
你可以宣佈第二選擇爲一個變量。
例如:
DECLARE @var as int
SET @var = (SELECT COUNT(*) FROM table)
SELECT
Id,
CASE WHEN level=2 THEN @var else 0 end as Grade
FROM CLASS
基礎上,你可以運行東西沿着這些路線的PHP文件:創建數據庫連接
開始:
<?php
$mysqli = new mysqli("example.com", "user", "password", "database");
if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}
這if
語句檢查表test
如果它不存在,則將其丟棄或創建表test
與現場id
這是一個INT
if (!$mysqli->query("DROP TABLE IF EXISTS test") || !$mysqli->query("CREATE TABLE test(id INT)")) {
echo "Table creation failed: (" . $mysqli->errno . ") " . $mysqli->error;
}
然後如果條件嘗試你在這裏運行查詢;這裏他們有三個疑問。
首先 - 計算表中(其將等於0)
二總列數 - 值添加到表
第三 - 再次計數的總的行,其這次將輸出「1」
// this is what you may be asking?
// they add to their sql query
$sql = "SELECT COUNT(*) AS _num FROM test; ";
$sql.= "INSERT INTO test(id) VALUES (1); ";
$sql.= "SELECT COUNT(*) AS _num FROM test; ";
確保查詢已正確構建
if (!$mysqli->multi_query($sql)) {
echo "Multi query failed: (" . $mysqli->errno . ") " . $mysqli->error;
}
然後運行該代碼
do {
if ($res = $mysqli->store_result()) {
var_dump($res->fetch_all(MYSQLI_ASSOC)); // this will gather all records from the Database
$res->free();
}
} while ($mysqli->more_results() && $mysqli->next_result()); // You can find the links for documentation for more_results() and next_result() below
?>
的文檔more_results()和next_results()
注意$sql
,你可以看到他們只是創建將一起運行,如果一切都是真的多個查詢。
它會輸出這樣的:
array(1) {
[0]=>
array(1) {
["_num"]=>
string(1) "0"
}
}
array(1) {
[0]=>
array(1) {
["_num"]=>
string(1) "1"
}
}
請注意,這不是我的代碼,我是從here
謝謝WJS,那很好 –