- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个嵌套查询,第二个在我遍历第一个的结果时运行。我很想用 MySQL 服务器代替 PHP 来完成这项工作,但我不知道如何将这两者结合起来。
第一个查询:
SELECT post_id,
MAX(CASE WHEN meta_key = 'size' THEN meta_value END) size,
MAX(CASE WHEN meta_key = 'adlink' THEN meta_value END) adlink,
MAX(CASE WHEN meta_key = 'frontpage' THEN meta_value END) frontpage,
MAX(CASE WHEN meta_key = 'expiration' THEN meta_value END) expiration,
MAX(CASE WHEN meta_key = 'image1' THEN meta_value END) image1,
MAX(CASE WHEN meta_key = 'image2' THEN meta_value END) image2,
MAX(CASE WHEN meta_key = 'image3' THEN meta_value END) image3,
MAX(CASE WHEN meta_key = 'image4' THEN meta_value END) image4,
MAX(CASE WHEN meta_key = 'iframe' THEN meta_value END) iframe,
MAX(CASE WHEN meta_key = 'location' THEN meta_value END) location,
MAX(CASE WHEN meta_key = 'sublocation' THEN meta_value END) sublocation
FROM wp_postmeta WHERE post_id in
(SELECT post_id from wp_postmeta
WHERE meta_value LIKE 'Run Of Site') GROUP BY Post_id
然后,遍历结果,我们从另一个表中获取图像,如'image1'等,只是第一组结果中的帖子id号:
SELECT meta_value FROM wp_postmeta
WHERE post_id IN
(SELECT meta_value from wp_postmeta
WHERE post_id = " . $row{'post_id'} ." AND meta_key like 'image%')
这是查看 PHP 迭代的完整代码(我知道它需要更好的格式以提高可读性):
$rosads = mysql_query("SELECT post_id,
MAX(CASE WHEN meta_key = 'size' THEN meta_value END) size,
MAX(CASE WHEN meta_key = 'adlink' THEN meta_value END) adlink,
MAX(CASE WHEN meta_key = 'frontpage' THEN meta_value END) frontpage,
MAX(CASE WHEN meta_key = 'expiration' THEN meta_value END) expiration,
MAX(CASE WHEN meta_key = 'image1' THEN meta_value END) image1,
MAX(CASE WHEN meta_key = 'image2' THEN meta_value END) image2,
MAX(CASE WHEN meta_key = 'image1' THEN meta_value END) image3,
MAX(CASE WHEN meta_key = 'image2' THEN meta_value END) image4,
MAX(CASE WHEN meta_key = 'iframe' THEN meta_value END) iframe,
MAX(CASE WHEN meta_key = 'location' THEN meta_value END) location,
MAX(CASE WHEN meta_key = 'sublocation' THEN meta_value END) sublocation
FROM wp_postmeta WHERE post_id in (SELECT post_id from wp_postmeta WHERE meta_value LIKE 'Run Of Site') GROUP BY Post_id");
if (!$rosads) { // add this check.
die('Invalid query: ' . mysql_error());
}
while ($row = mysql_fetch_array($rosads)) { // ######### ITERATE THROUGH THE LIST
if ($row{'size'} == "Premium"){
if ($row{'iframe'}){
$premium = $premium . '<div name="PREMIUM'.$row{'post_id'}.'" style="float:left;">'.$row{'iframe'}.'</div>'."\n";
}else{
$images = mysql_query("SELECT meta_value FROM wp_postmeta where post_id IN(SELECT meta_value from wp_postmeta WHERE post_id = " . $row{'post_id'} ." AND meta_key like 'image%')");
$premium = $premium . "<div name=\"".$row{'post_id'}."\" class=\"multipleslides\" >";
while ($row2 = mysql_fetch_array($images)) {
$premium = $premium . "\t<a target=\"_blank\" href=\"" . $row{'adlink'} ."\"><img src=\"/wp-content/uploads/" .$row2{'meta_value'} ."\"></a>\r\n";
}
$premium = $premium . "</div><br>";
}
/* ### TEST STUFF ####
echo $row{'post_id'} . ", " . $row{'size'} . ", " . $row{'adlink'} . ", " . $row{'frontpage'} . ", " . $row{'expiration'} . ", " . $row{'image1'} . ", " . $row{'image2'} . ", " . $row{'image3'} . ", " . $row{'image4'} . ", " . 1$row{'location'} . ", " . $row{'sublocation'} . ", " . $row{'iframe'} . "<hr>";
*/
} // ###### END THIS ITERATION ####
最佳答案
您也可以将查询用作列,但为了安全起见,请确保您的子查询应该返回一条记录我在子查询中添加了 LIMIT 1
或者如果有超过 1 个结果,您可以删除限制并可以使用 GROUP_CONCAT(meta_value)
但注意它的默认限制为 1024 个字符
SELECT wpm.post_id,
MAX(CASE WHEN wpm.meta_key = 'size' THEN wpm.meta_value END) size,
MAX(CASE WHEN wpm.meta_key = 'adlink' THEN wpm.meta_value END) adlink,
MAX(CASE WHEN wpm.meta_key = 'frontpage' THEN wpm.meta_value END) frontpage,
MAX(CASE WHEN wpm.meta_key = 'expiration' THEN wpm.meta_value END) expiration,
MAX(CASE WHEN wpm.meta_key = 'image1' THEN wpm.meta_value END) image1,
MAX(CASE WHEN wpm.meta_key = 'image2' THEN wpm.meta_value END) image2,
MAX(CASE WHEN wpm.meta_key = 'image3' THEN wpm.meta_value END) image3,
MAX(CASE WHEN wpm.meta_key = 'image4' THEN wpm.meta_value END) image4,
MAX(CASE WHEN wpm.meta_key = 'iframe' THEN wpm.meta_value END) iframe,
MAX(CASE WHEN wpm.meta_key = 'location' THEN wpm.meta_value END) location,
MAX(CASE WHEN wpm.meta_key = 'sublocation' THEN wpm.meta_value END) sublocation,
(
SELECT
meta_value
FROM
wp_postmeta
WHERE post_id IN
(SELECT
meta_value
FROM
wp_postmeta
WHERE post_id = wpm. post_id
AND meta_key LIKE 'image%')
LIMIT 1) images
FROM wp_postmeta wpm WHERE wpm.post_id IN
(SELECT post_id FROM wp_postmeta
WHERE meta_value LIKE 'Run Of Site') GROUP BY wpm.post_id
对于 group_concat()
(
SELECT
GROUP_CONCAT(meta_value)
FROM
wp_postmeta
WHERE post_id IN
(SELECT
meta_value
FROM
wp_postmeta
WHERE post_id = wpm. post_id
AND meta_key LIKE 'image%')
) images
关于php - 试图合并两个嵌套查询以提高效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22274567/
我是 C++ 的新手,我在使用这段代码时遇到了问题: string output_date(int day, int month, int year){ string date; if
所以我这样做了 tar cvzf test.zip FP 为了创建目录 FP 的 zip 但是,它会列出 zip 中的目录 FP/ FP/php/ FP/php/pdf/ FP/php/docs/ F
我正在尝试在 Swift、Xcode 7.3(所以是 Swift 2.2)中创建一个通用类,但我似乎无法让它通过编译器: protocol Struct1Protocol { } struct Str
我的测试用例是这样的: class FooTest extends PHPUnit_Framework_TestCase { /** @covers MyClass::bar */ f
我正在尝试将brew install wine作为使electron-builder工作的一步。但是我所能得到的只是以下响应: ==> Installing dependencies for wine
我这样做: string[,] string1 = {{"one", "0"},{"Two", "5"},{"Three","1"}}; int b = 0; for(int i = 0; i <=
我正在尝试使用 SetWindowsHookEx 键盘 Hook Notepad.exe。 如您所见,工作线程正在将其 ASCII 代码(即 wParam)发送到指定的服务器。 UINT WINAPI
我正在尝试将 ListView 实现到我的 Fragment 中,但无论我尝试什么,我都会得到一个 NullPointerException。我检查对象是否为 null 并记录是否为 null,看起来
我尝试在一行中对齐两个 div。使用 float left 属性,一切顺利。但是当我在 div 中使用图像时,它开始产生问题。 所以这是我的示例代码:- Some headi
我目前正在使用此代码来获取图像的灰度图像表示并以 (512, 370, 1) 的格式表示它大批。 img_instance = cv2.imread(df.iloc[i][x_col]) / 255.
总结 我正在创建一个简单的应用程序,它允许用户选择一个包含顶级窗口的进程。用户首先键入 native DLL(而非托管 DLL)的路径。然后用户键入将在 Hook 过程中调用的方法的名称。该方法不得返
我是一名优秀的程序员,十分优秀!