На основе ответа @ Cristiana214
Следующий фрагмент PHP можно использовать для выполнения трюка https://twitter.com/ [screen_name] / profile_image? Size = normal работа на мобильном телефоне.
Из-за перенаправления твиттеров на мобильную версию сайта ссылки, такие как https://twitter.com/ [screen_name] / profile_image? Size = normal , прерываются на мобильных устройствах
Таким образом, скрипт получает ответ о перенаправлении (на аватар пользователя), извлекает адрес, а затем перенаправляет саму страницу
if (!isset( На основе ответа @ Cristiana214
Следующий фрагмент PHP можно использовать для выполнения трюка https://twitter.com/ [screen_name] / profile_image? Size = normal работа на мобильном телефоне.
Из-за перенаправления твиттеров на мобильную версию сайта ссылки, такие как https://twitter.com/ [screen_name] / profile_image? Size = normal , прерываются на мобильных устройствах
Таким образом, скрипт получает ответ о перенаправлении (на аватар пользователя), извлекает адрес, а затем перенаправляет саму страницу
[110] Так что это может быть доступ как twitteravatar.php? Id = twitter, который (во время написания ) перезагружается в https://pbs.twimg.com/profile_images/767879603977191425/29zfZY6I_normal.jpg
Не красиво, но работает.
GET['id'])) На основе ответа @ Cristiana214
Следующий фрагмент PHP можно использовать для выполнения трюка https://twitter.com/ [screen_name] / profile_image? Size = normal работа на мобильном телефоне.
Из-за перенаправления твиттеров на мобильную версию сайта ссылки, такие как https://twitter.com/ [screen_name] / profile_image? Size = normal , прерываются на мобильных устройствах
Таким образом, скрипт получает ответ о перенаправлении (на аватар пользователя), извлекает адрес, а затем перенаправляет саму страницу
[110] Так что это может быть доступ как twitteravatar.php? Id = twitter, который (во время написания ) перезагружается в https://pbs.twimg.com/profile_images/767879603977191425/29zfZY6I_normal.jpg
Не красиво, но работает.
GET['id'] = 'twitter';
$urlget = curl_init();
curl_setopt($urlget, CURLOPT_URL, 'https://twitter.com/' . На основе ответа @ Cristiana214
Следующий фрагмент PHP можно использовать для выполнения трюка https://twitter.com/ [screen_name] / profile_image? Size = normal работа на мобильном телефоне.
Из-за перенаправления твиттеров на мобильную версию сайта ссылки, такие как https://twitter.com/ [screen_name] / profile_image? Size = normal , прерываются на мобильных устройствах
Таким образом, скрипт получает ответ о перенаправлении (на аватар пользователя), извлекает адрес, а затем перенаправляет саму страницу
[110] Так что это может быть доступ как twitteravatar.php? Id = twitter, который (во время написания ) перезагружается в https://pbs.twimg.com/profile_images/767879603977191425/29zfZY6I_normal.jpg
Не красиво, но работает.
GET['id'] . '/profile_image?size=normal');
curl_setopt($urlget, CURLOPT_HEADER, true);
curl_setopt($urlget, CURLOPT_RETURNTRANSFER, 1);
$res = curl_exec($urlget);
preg_match_all("/location: (.*)/", $res, $found);
header('Location: ' . $found[1][0]);
Так что это может быть доступ как twitteravatar.php? Id = twitter, который (во время написания ) перезагружается в https://pbs.twimg.com/profile_images/767879603977191425/29zfZY6I_normal.jpg
Не красиво, но работает.
Это работает в Oracle 10g:
select id, 'Value' || n as name,
case n when 1 then value1 when 2 then value2 when 3 then value3 end as value
from (select rownum n
from (select 1 from dual connect by level <= 3)) ofs, t
Я думаю, что в Oracle 9i были рекурсивные запросы? В любом случае, я почти уверен, что у него есть поддержка CASE, поэтому, даже если у него нет рекурсивных запросов, вы можете просто сделать вместо этого «(выберите 1 из двойного объединения, все выберите 2 из двойного объединения, все выберите 3 из двойного)». Злоупотребление рекурсивными запросами является более общим для Oracle. (Однако использование объединений для генерации строк переносимо на другие БД)
UNION ALL, как предлагали другие, вероятно, лучший выбор в SQL. Вы также можете рассмотреть возможность решения этой проблемы во внешнем интерфейсе, в зависимости от ваших конкретных требований.
Вы можете сделать это так, но это не очень красиво:
SELECT id,'Value 1' AS name,value1 AS value FROM mytable
UNION
SELECT id,'Value 2' AS name,value2 AS value FROM mytable
UNION
SELECT id,'Value 3' AS name,value3 AS value FROM mytable
Если вы используете SQL Server 2005+, вы можете использовать UNPIVOT
CREATE TABLE #tmp ( ID int, Value1 int, Value2 int, Value3 int)
INSERT INTO #tmp (ID, Value1, Value2, Value3) VALUES (1, 2, 3, 4)
SELECT
*
FROM
#tmp
SELECT
*
FROM
#tmp
UNPIVOT
(
[Value] FOR [Name] IN (Value1, Value2, Value3)
) uPIVOT
DROP TABLE #tmp
Объединение трех операторов select должно помочь:
SELECT ID, 'Value1', Value1 AS Value
FROM TABLE
UNION
SELECT ID, 'Value2', Value2 AS Value
FROM TABLE
UNION
SELECT ID, 'Value3', Value3 AS Value
FROM TABLE
Дайте шанс объединению
.
select ID, 'Value1' as Name, Value1 as Value from table_name union all
select ID, 'Value2', Value2 as Value from table_name union all
select ID, 'Value3', Value3 as Value from table_name
order by ID, Name
использование union all
означает, что сервер не будет выполнять отдельный
(что подразумевается в операциях union
). Это не должно иметь никакого значения для данных (так как ваш ID должен НАДЕЖДАТЬ быть другим), но это может немного ускорить его.
Для Sql Server рассмотрите UNPIVOT как альтернативу UNION:
SELECT id, value, colname
FROM #temp t
UNPIVOT (Value FOR ColName IN (value1,value2,value3)) as X
Это также вернет имя столбца. Я не уверен, для чего используется X, но вы не можете его пропустить.