Using array_chunk() with the row count cut in half then rounded-up will ensure that the second column always has equal or one less row than the first column.
HTML tables should only be used to display "tabular" data. Since you are building two non-tabular lists, it would be more appropriate to employ other tags (several different tags may be appropriate).
Demo (copy-paste my snippet into phptester.net to see the rich-text result)
// $resultset = $db->loadAssocList(); ...I am supplying my own sample data
$resultset = [
['title' => 'A', 'introtext' => 'A intro'],
['title' => 'B', 'introtext' => 'B intro'],
['title' => 'C', 'introtext' => 'C intro'],
['title' => 'D', 'introtext' => 'D intro'],
['title' => 'E', 'introtext' => 'E intro']
];
$halves = array_chunk($resultset, ceil(count($resultset) / 2));
foreach ($halves as $half) {
echo '<div style="display: inline-block; vertical-align: top; border: solid 1px black; padding: 2px;">';
foreach ($half as $row) {
echo '<div style="border: 1px solid blue; padding: 2px;">';
echo '<p style="background-color: green;">' , $row['title'] , '</p>';
echo '<p style="background-color: yellow;">' , $row['introtext'] , '</p>';
echo '</div>';
}
echo '</div>';
}
Output:

After a bit of back and forth in the comments, here is the direct approach to output only the title
values as two columns in the desired arrangement:
$db = JFactory::getDbo();
$query = $db->getQuery(true)
->select("title")
->from("#__content")
->where("introtext LIKE '%Still Airing%'")
->order("title");
// echo $query->dump(); // uncomment if you want to see the rendered query
$db->setQuery($query);
$resultset = $db->loadColumn();
$halves = array_chunk($resultset, ceil(count($resultset) / 2));
foreach ($halves as $half) {
echo '<div style="display: inline-block; vertical-align: top; border: solid 1px black; padding: 2px;">';
echo '<div>' , implode('</div><div>', $half) , '</div>';
echo '</div>';
}
Note, by using Joomla's query building methods, it is easier to diagnose problems by printing $query->dump()
.